【问题标题】:error "[PHPUnit\Framework\Exception] Undefined index: ELEMENT" when running codeception with WebDriver使用 WebDriver 运行 codeception 时出现错误“[PHPUnit\Framework\Exception] Undefined index: ELEMENT”
【发布时间】:2019-10-22 19:39:09
【问题描述】:

我正在尝试使用 WebDriver 运行 codeceptions 验收测试。我目前的设置如下:

  • 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

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

我研究了这个问题,发现过去 geckodriver 也有类似的问题。可以通过将-enablePassThrough false 传递给 selenium 来修复它。但是,在 selenium 3.9 中删除了直通模式。修复 here 是简单地切换到 chromedriver。但是,由于我已经在使用 chromedriver,所以这对我不起作用。有没有可能,铬不支持 w3c 规范?在对 Selenium 的支持方面,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 管道中运行良好

【问题讨论】:

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


    【解决方案1】:

    php-webdriver 库还不支持w3c 模式。 您可以通过 w3c: false 作为获取遗留行为所需的能力,
    但更可靠的选择是使用 ChromeDriver v74。

    更多信息可以在这张票https://github.com/facebook/php-webdriver/issues/469#issuecomment-499519728找到

    更新:facebook/webdriver 库升级到 1.7.0 版本也应该可以解决此问题。

    【讨论】:

    • 降级到 v74 为我解决了这个问题,谢谢!您能否在使用 w3c 选项时包含一个用于代码接收的示例配置?我无法让它运行。这可能会帮助没有降级选项的人。
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 2014-05-08
    • 2014-06-01
    • 2016-03-06
    • 2020-12-11
    • 2022-06-25
    • 1970-01-01
    • 2019-12-09
    相关资源
    最近更新 更多