使用WebDriver运行代码接收时发生错误“ [PHPUnit \ Framework \ Exception]未定义的索引:ELEMENT”

时间:2019-06-07 09:45:15

标签: selenium selenium-webdriver webdriver selenium-chromedriver codeception

我正在尝试使用WebDriver运行代码接受测试。我当前的设置如下:

  • Arch Linux
  • Chromium:Chromium 75.0.3770.80 Arch Linux
  • 随附的chromedriver版本:ChromeDriver 75.0.3770.80(9a9aa15057b6b2cc0909bdcf638c0b65ecd516f2-refs / branch-heads / 3770 @ {#948})
  • Selenium服务器:Selenium服务器版本:3.14.0,修订版:aacccce0

我正在通过运行硒 env webdriver.chrome.driver="chromedriver" java -jar /usr/share/selenium-server/selenium-server-standalone.jar -port 5555 & 但是,当我运行验收测试时,每个测试都会出现错误[PHPUnit\Framework\Exception] Undefined index: ELEMENT。 Chromium可以正确启动,可以加载当前网址,但无法执行其他任何操作。

我研究了这个问题,发现过去壁虎驱动程序也存在类似的问题。可以通过将-enablePassThrough false传递给硒来解决。但是,硒3.9中删除了直通模式。解决方法here只是切换到chromedriver。因为我已经在使用chromedriver,所以这对我不起作用。铬可能不支持w3c规范吗? Chromium和Chrome在支持硒方面有什么区别吗?

硒的输出: 起始硒:

11:39:58.474 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.14.0', revi
11:39:58.478 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 5555
2019-06-07 11:39:58.689:INFO::main: Logging initialized @558ms to org.seleniumhq.jetty9.util.log.StdErrLog
11:39:58.895 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 5555

开始进行代码接收测试

11:40:24.577 INFO [ActiveSessionFactory.apply] - Capabilities are: {
  "browserName": "chrome",
  "chromeOptions": {
    "args": [
      "--disable-gpu"
    ]
  }
}
11:40:24.580 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.remote.server
Starting ChromeDriver 75.0.3770.80 (9a9aa15057b6b2cc0909bdcf638c0b65ecd516f2-refs/branch-heads/3770@{#948})
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
11:40:26.065 INFO [ProtocolHandshake.createSession] - Detected dialect: W3C
11:40:26.130 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 0c80ffc4e6c160d2817ab60ced6a279f (org.openqa.selenium.chrome.ChromeDriverService)

接受测试应该很好,因为它们可以在我的CI-管道中正常运行

1 个答案:

答案 0 :(得分:1)

php-webdriver库尚不支持w3c模式。 您可以将w3c: false作为获取旧行为的必要功能,
但更可靠的选择是使用ChromeDriver v74。

更多信息可以在此票证https://github.com/facebook/php-webdriver/issues/469#issuecomment-499519728

中找到

更新:将facebook / web-driver库升级到1.7.0版本也应该解决此问题。