Php Codeception未定义索引:元素错误
我正在使用Codeception进行验收测试。在我的本地pc上,我可以用selenium和chromedriver运行测试。直到1周,它在我的git上也可以正常工作,但是现在,出现了这个错误 “[PHPUnit\Framework\Exception]未定义的索引:元素” 本地它工作正常,没有错误 我已经搜索了这个错误并找到了一个提示,我必须以“-enablepassthrough false”开头。但这并没有真正起作用 在使用相同设置的1周之前,它可以正常工作 这是我的承诺。suite.yml:Php Codeception未定义索引:元素错误,php,selenium,webdriver,codeception,Php,Selenium,Webdriver,Codeception,我正在使用Codeception进行验收测试。在我的本地pc上,我可以用selenium和chromedriver运行测试。直到1周,它在我的git上也可以正常工作,但是现在,出现了这个错误 “[PHPUnit\Framework\Exception]未定义的索引:元素” 本地它工作正常,没有错误 我已经搜索了这个错误并找到了一个提示,我必须以“-enablepassthrough false”开头。但这并没有真正起作用 在使用相同设置的1周之前,它可以正常工作 这是我的承诺。suite.yml
actor: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'https://website.com'
host: 'selenium__standalone-chrome'
port: 4444
browser: chrome
window_size: 1920x1080
此错误消息
[PHPUnit\Framework\Exception] Undefined index: ELEMENT
…意味着ChromeDriver的点击()
通过Codeception出现问题
根据讨论中的@reinholdfuereder:
- 使用默认的W3C协议时,Codeception(v2.5.6)测试失败,执行
操作中的waitForElement()
Undefined index:ELEMENT
- 使用旧协议时,测试成功执行
操作,然后执行看似成功的waitForElement()
操作,但在click()
操作中失败waitForElementNotVisible()
- Codeception的
操作被转换为click()
WebDriver命令,ChromeDriver v75似乎不再支持该命令clickElement
解决方案 如果您正在使用ChromeDriver v75.x和ChromeV75.x,并且看到此错误,则需要传递附加的chromeOptions
w3c
设置为true
奥特罗 您可以在以下内容中找到一些详细的讨论:
selenium/standalone-chrome
docker图像。随着最新版本的发布(3.141.59-pd
),他们将附带的Chrome版本从74
更新为75
(请参阅:)
您的本地计算机可能仍然运行Chrome74的旧版本,因此没有问题。但是,无论何时重建docker机器(例如,当使用某些CI环境时),您都会获得最新版本。在这种情况下,一个新的Chrome版本。这“迫使”您也使用新的facebook/php Web驱动程序升级php机器
我建议指定图像的版本以防止这些不必要的副作用,例如
image: selenium/standalone-chrome:3.141.59-oxygen
或者,如果您已经使用Chrome 75运行,则Chrome/ChromeDriver v79的
3.141.59-paradium
设置w3c
在acceptance.suite.yml
中帮助:
modules:
enabled:
- WebDriver:
capabilities:
chromeOptions:
w3c: false
这是我在Mac和chrome上唯一的选择。