功能(@javascript)测试效果不佳

时间:2019-06-18 08:33:26

标签: php selenium rhel behat

当我在浏览器的输入字段中键入关键字以查看结果时,我正在设置一个简单的检查。 而且,当检查从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"

我希望快速检查一下,我所有的行都是绿色,但是目前无法正常工作。

3 个答案:

答案 0 :(得分:1)

似乎页面未加载,并且元素不在页面中。

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

  1. 如果需要使用php中的循环,等待元素出现,或者看看是否可以将wait与类似document.getElementById('$field') != null的条件一起使用

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

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

答案 1 :(得分:0)

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

但是当我启动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)

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

谢谢

答案 2 :(得分:0)

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

  

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

enter image description here

但是,当我启动Behat命令时,Chromedriver正在整个过程中运行。

感谢前进