【问题标题】:Feature (@javascript) testing doesn't work well功能 (@javascript) 测试效果不佳
【发布时间】:2019-06-18 08:33:26
【问题描述】:

当我在浏览器的输入字段中键入关键字以查看结果时,我正在设置一个简单的检查。 并且当在 javascript 部分开始检查时,检查会花费很长时间以完成错误。

我正在使用:Linux RedHat 7 行为 3.5.0 Selenium 独立服务器 3.141.59 貂皮1.6

# behat.yml

default: 
  extensions: 
    Behat\MinkExtension: 
      browser_name: chrome
      goutte: ~
      javascript_session: selenium2
      selenium2: 
        wd_host: http://99.80.48.204:4444/wd/hub
        capabilities: { "browser": "chrome", "version": "*", 'chrome': {'switches':['--start-maximized']}}
      base_url: https://www.bing.com
  suites: 
    ui: 
      contexts: [FeatureContext, WebContext]
#Webcontext.php

<?php

use Behat\MinkExtension\Context\MinkContext;

class WebContext extends MinkContext {

     /**
     *@When I wait for :arg1 seconds
     */
    public function iWaitForSeconds($args)
    {
      $this->getSession()->wait($args * 1000);
    }

    /**
     * @When I fill in :arg1 with: :arg2
     */
    public function iFillInWith($value, $field)
    {
      $javascript = "window.onload = function () {var e = document.getElementById('$field').value='$value';}";
      $this->getSession()->executeScript($javascript);
    }

}
# bing.feature

@insulated
Feature: Bing

  Scenario: Homepage
    Given I am on the homepage
    Then  I should see "Bing"
    And I should see "Images"
    And I should see "Office Online"
  @javascript
  Scenario: Search
    Given I am on the homepage
    When I fill in "sb_form_q" with "grafikart" 
    And I wait for 1 seconds
    Then I should see "Grafikart.fr"

我希望快速检查,我的所有线路都是绿色的,但目前它不起作用。

【问题讨论】:

  • 你得到什么错误?你用什么命令运行的?
  • 我用 bin/behat 运行,当检查时当我用“grafikart”填写“sb_form_q”时.....错误是:未找到 ID|名称|标签|值|占位符“sb_form_q”的表单字段。 (Behat\Mink\Exception\ElementNotFoundException)

标签: php selenium rhel behat


【解决方案1】:

好像页面没有加载是的,该元素不在页面中。

尝试:
1.使用wait方法等待页面加载完毕
-&gt;wait(5000, "document.readyState === 'complete'");

  1. 如果需要,使用 php 中的循环等待元素出现,或者查看是否可以使用 waitdocument.getElementById('$field') != null 之类的条件

根据情况,如果您从另一个页面导航,您可能只需要其中一个或两个都需要,您可以将第二个包含在填充方法中。
等待完成后,您可以填写该字段。

+将您的 $javascript 方法更改为
document.getElementById('$field').value='$value';

【讨论】:

  • 嗨劳达,我试过你的方法,但结果是一样的。我更改了我的方案以验证是否可能是我的 Feature 失败但不是。检查时间超过 8 分钟才能得到错误的结果
  • 感谢 Laud 的编辑,但我总是遇到同样的问题。当我运行我的 Behat 时。没有@javascript 标签的场景立即完成/绿色。在脚本开始检查第二种情况时,它会产生时间和错误。我检查了所有常见问题 - 论坛和其他人以找到解决方案,但没有成功......
【解决方案2】:

最后,我一直在修改 selenium 和 Behat 的配置。现在链接在两者之间有效。

但是当我启动我的行为测试时 ---> bin/behat 代码比以前运行得更快,但我仍然有一个错误:

 Could not open connection: Error forwarding the new session cannot find : Capabilities {browser: chrome, browserName: chrome, browserVersion: 76.0.3809.12, ignoreZoomSetting: false, javascriptEnabled: true, name: Behat feature suite, platform: LINUX, selenium-version: 3.141.59} (Behat\Mink\Exception\DriverException)

我正在搜索许多常见问题解答以获得回复,但没有机会。 请问有人可以帮我吗?

谢谢

【讨论】:

    【解决方案3】:

    经过几次尝试,我终于设法在 behat - selenium 和我的 webdriver 之间建立了联系。 我的最后一个错误是:

    无法打开连接:未知错误:找不到 ChromeBinary

    但是,当我启动 Behat 命令时,Chromedriver 正在处理这些进程。

    提前致谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 2013-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多