关于 xpath:Unable to find page elements with Behat / Mink using Selenium 3.5.x

Unable to find page elements with Behat / Mink using Selenium 3.5.x

我正在为我们当前的网站设置行为测试。我过去在 Selenium 独立服务器上使用过 Behat,现在已经更新到最新的 Behat 3 和 Selenium 3.5。我有很多问题。使用 Selenium 3.5 我根本无法让 xpath 选择器工作。它无法按 id、名称、类等查找元素。使用 Selenium 3.4.x 似乎可以正常工作,但我无法按下按钮工作。我收到此错误:

1
2
3
4
5
Then I click button"loginBtn"                                                              # FeatureContext::iClickButton()
  mouseMoveTo
  Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
  System info: host: 'matt-VirtualBox', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-59-generic', java.version: '1.8.0_131'
  Driver info: driver.version: RemoteWebDriver (WebDriver\\Exception\\UnknownCommand)

这似乎是在 3.5.x 中修复的问题,其中 enablePassThrough 设置为 true。这是我的 behat.yml 配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
default:
suites:
    default:
        contexts:
            - FeatureContext:
                screenshots_path: '%paths.base%/screenshots/firefox/'
extensions:
    Behat\\MinkExtension:
        base_url:  'http://localhost:8080/customer_portal/'
        default_session: selenium2
        browser_name: 'firefox'
        selenium2:
            browser: 'firefox'
            capabilities:
                browserName: 'firefox'
                browser: 'firefox'
                version: ''
            wd_host: 'localhost:5555/wd/hub'

在我的 composer.json 文件中

1
2
3
4
5
6
7
8
9
10
11
12
{
"require": {
   "behat/behat":"3.*@stable",
   "behat/mink":"1.7.*@stable",
   "behat/mink-selenium2-driver":"@stable",
   "behat/mink-goutte-driver":"@stable",
   "behat/mink-extension":"@stable",
       "phpmd/phpmd" :"@stable"
},
"config": {
   "bin-dir":"bin/"
}

}

我正在使用 Firefox 55 和 geckodriver v18。有没有人成功配置 selenium 以使用 Behat 3 和 Firefox?


mouseMoveTo 错误是使用 selenium3 时众所周知的问题。此错误仅发生在带有 gecko 驱动程序的 firefox 浏览器上。要解决此问题,您可以使用 chrome 或更新 MinkSelenium2Driver 库。应该是 MinkSelenium2Driver 的主分支,它需要 behat/mink:~1.7@dev。这是问题的关键 MinkSelenium2Driver 所以如果你可以使用所有最新的 behat 版本,那么 composer.json 可能看起来像这样:

1
2
3
4
5
6
"require": {
   "behat/behat":"v3.3.1",
   "behat/mink":"v1.7.1",
   "behat/mink-extension":"v2.2",
   "behat/mink-selenium2-driver":"dev-master",
}


这似乎是 Selenium 的一个问题。我在使用 FF 时也遇到了问题,无法点击元素。