错误“[PHPUnit\Framework\Exception] 未定义的索引:ELEMENT”当 运行 与 WebDriver 代码接收时
error "[PHPUnit\Framework\Exception] Undefined index: ELEMENT" when running codeception with WebDriver
我正在尝试获取 codeceptions 验收测试 运行 WebDriver。我当前的设置如下:
- 拱门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
我正在通过 运行ning 执行 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 中删除了 passthrough-mode。修复 here 是简单地切换到 chromedriver。但是,由于我已经在使用 chromedriver,所以这对我不起作用。有没有可能,chromium 不支持 w3c 规范? Chromium 和 Chrome 在对 Selenium 的支持方面有什么区别吗?
硒的输出:
开始硒:
11:39:58.474 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.14.0', revi
11:39:58.478 INFO [GridLauncherV3.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] - 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[=13=]] - Started new session 0c80ffc4e6c160d2817ab60ced6a279f (org.openqa.selenium.chrome.ChromeDriverService)
验收测试应该没问题,因为它们 运行 在我的 CI-Pipeline
中很好
php-webdriver 库还不支持 w3c
模式。
您可以将 w3c: false
作为获得遗留行为所需的能力传递,
但更可靠的选择是使用 ChromeDriver v74。
可以在这张工单中找到更多信息https://github.com/facebook/php-webdriver/issues/469#issuecomment-499519728
更新: 将 facebook/webdriver
库升级到 1.7.0 版本应该也能解决这个问题。
我正在尝试获取 codeceptions 验收测试 运行 WebDriver。我当前的设置如下:
- 拱门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
我正在通过 运行ning 执行 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 中删除了 passthrough-mode。修复 here 是简单地切换到 chromedriver。但是,由于我已经在使用 chromedriver,所以这对我不起作用。有没有可能,chromium 不支持 w3c 规范? Chromium 和 Chrome 在对 Selenium 的支持方面有什么区别吗?
硒的输出: 开始硒:
11:39:58.474 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.14.0', revi
11:39:58.478 INFO [GridLauncherV3.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] - 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[=13=]] - Started new session 0c80ffc4e6c160d2817ab60ced6a279f (org.openqa.selenium.chrome.ChromeDriverService)
验收测试应该没问题,因为它们 运行 在我的 CI-Pipeline
中很好php-webdriver 库还不支持 w3c
模式。
您可以将 w3c: false
作为获得遗留行为所需的能力传递,
但更可靠的选择是使用 ChromeDriver v74。
可以在这张工单中找到更多信息https://github.com/facebook/php-webdriver/issues/469#issuecomment-499519728
更新: 将 facebook/webdriver
库升级到 1.7.0 版本应该也能解决这个问题。