Selenium WebDriver为Click操作抛出错误,但Click实际上是成功的

时间:2017-08-11 10:18:07

标签: php selenium docker selenium-webdriver selenium-chromedriver

使用Selenium和Google Chrome运行合成浏览器测试时,我们会在特定网站上间歇性地收到Selenium错误(请参阅下文)。流程是:

  1. 加载起始页
  2. 输入搜索字词
  3. 截取屏幕截图
  4. 点击搜索按钮
  5. 截取结果截图
  6. 在单击操作(步骤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
    

    堆栈:

    • Selenium / Chrome Docker容器:selenium/standalone-chrome:3.0.1-germanium
    • Facebook PHP WebDriver:see on GitHub
    • Docker PHP:see on 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();
    }
    

    修改

    我已将我们的Selenium容器升级到3.4.0-einsteinium,但仍然看到问题。

    我们一直遇到一些目标网站没有首次加载而Selenium抛出此错误的问题......

    Curl error thrown for http POST to /session/cd18695c-bf88-482f-998e-4d8039c22359/url
    

    ...我们通过捕获该错误并在放弃之前重试x次来解决这个问题。此更新也未修复此问题。

1 个答案:

答案 0 :(得分:3)

docker-selenium issue 163中报告了同样的错误,并且似乎仅与硒有关 这就是为什么现在(2017年8月)是SeleniumHQ/selenium issue 4384(现在2017年10月关闭,作为“绩效问题”)。

docker-selenium issue 20(2015)this comment也出现了这个错误,更多关于Chrome崩溃的信息:

  
      
  • 以特权模式启动:

    docker run --privileged
    
  •   
  • 修复小/ dev / shm大小

    docker exec $id sudo umount /dev/shm
    docker exec $id sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
    
  •   

2017年底更新:issue 163 mentions

也许在supervisord中存在错误,您可以尝试bump the version or even go back to an older one