硒挂着xvfb

时间:2016-02-26 15:53:58

标签: selenium selenium-chromedriver xvfb

我正在尝试运行自动化的selenium headless测试,而我遇到了一些问题,其中测试因某些无法解释的原因而挂起。完整代码段位于pastebin,但代码的相关部分如下所示:

# stress testing
i = 0
while True:
  print i
  d = webdriver.Remote(
      service.service_url,
      desired_capabilities=DesiredCapabilities.CHROME
  )
  print i, "started driver"
  d.get("http://www.facebook.com")
  print i, "got fb"
  d.quit()
  print i, "quit"
  i += 1

示例输出

0
0 started driver
0 got fb
0 quit
...
11 <hang>

表示webdriver.Remote拒绝正确启动驱动程序。当使用webdriver.Chrome直接构建驱动程序实例(而不是将ChromeDriver作为服务运行)时,也会发生这种情况。

将SIGINT发送到挂起的程序后,我得到一个stacktrace(pastebin),指示在构造函数的某处读取阻塞套接字。

ChromeDriver的日志(dropcanvas)似乎没有任何不妥之处,我对这里发生的事情感到非常困惑。

以前曾问过类似的问题,最相关的问题是Selenium Chromedriver Hangs?;但是,我无法重现已接受的解决方案(为webdriver...的每个实例化重新启动Xvfb)。在这里,等效的是在Xvfb.start之前调用d = webdriver.Remote...并在循环结束时调用Xvfb.stop;我试过这个没有成功。

非常感谢任何帮助。

编辑:如堆栈跟踪所示,webdriver.Remote挂在某个套接字读取功能上;我跟踪了要求

POST 'http://127.0.0.1:<chromedriver_port>/session'

身体

 '{"desiredCapabilities": {"platform": "ANY", "browserName": "chrome", "version": "", "javascriptEnabled": true}}'

因此Chromedriver似乎没有因某些原因做出回应。将继续调试。

0 个答案:

没有答案