Selenium WebDriver为单击操作抛出错误,但单击实际上成功了
2022-08-30 23:46:09
当使用Selenium和Google Chrome运行综合浏览器测试时,我们会在特定网站上间歇性地收到Selenium错误(见下文)。流程为:
- 加载起始页
- 输入搜索词
- 截取屏幕截图
- 点击搜索按钮
- 截取结果的屏幕截图
该错误发生在点击操作(步骤4)期间,但最终的屏幕截图(步骤5)与此相矛盾,并显示搜索已启动(只能通过单击 - 网站上未实现某种形式的自动搜索)并返回结果。
错误:
Curl error thrown for http POST to /session/a4ec9662-1841-4809-9680-caf532b243b7/element/2/click
Operation timed out after 30001 milliseconds with 0 bytes received
叠:
- 硒/铬 Docker 容器:
selenium/standalone-chrome:3.0.1-germanium
- Facebook PHP WebDriver:参见 GitHub
- Docker PHP:参见 GitHub
我发现另一篇关于此的帖子建议将此环境变量设置为docker容器:但是,这不起作用。DBUS_SESSION_BUS_ADDRESS=/dev/null
我们如何从代码中管理容器:
$Docker = new Docker();
$Manager = $Docker->getContainerManager();
$Container = $Manager->find($container_name);
if ($Container) {
if ($Container->getState()->getRunning()) {
// Restart container based on some logic around runtime and usage
} else {
$Manager->start($Container->getId());
}
}
我们如何处理“点击”操作:
$Element = $this->WebDriverSession->findElement(By::cssSelector($css_selector));
if ($Element->isDisplayed()) {
$Element->click();
}
编辑:
我已经将我们的硒容器升级到,但仍然看到问题。3.4.0-einsteinium
我们一直遇到一些问题,一些目标网站没有第一次加载,硒抛出这个错误...
Curl error thrown for http POST to /session/cd18695c-bf88-482f-998e-4d8039c22359/url
...我们通过捕获该错误并在放弃之前重试x次来解决此问题。此更新也没有解决此问题。