webdriver返回与本地机器上的selenium网格并行测试运行时与浏览器通信的错误

时间:2014-07-14 13:48:22

标签: python google-chrome selenium selenium-grid selenium-chromedriver

我在Mac OS上的本地计算机上运行测试 Python 2.7.5

硒中心:

  

java -jar~ / Downloads / selenium-server-standalone-2.42.2.jar -role hub

Selenium节点:

java -jar ~/Downloads/selenium-server-standalone-2.42.2.jar -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -role node http://127.0.0.1:4444/grid/register

chromedriver是:

  

ChromeDriver 2.10.267517

我使用了行为框架并在每个场景之前打开了chrome驱动程序的新实例,并在场景钩子之后使用了quit方法。

当我一个接一个地运行测试时,没有任何问题。

当我在firefox驱动程序上并行运行测试时,一切都很好但是crome我有意想不到的行为。

当一个节点上的并行测试数量的第一步超过所有其他步骤时崩溃:

  

WebDriverException:消息:u"与远程浏览器通信时出错。它可能已经死了。\ n建立信息:版本:' 2.42.2',修订版:' 6a6995d',时间:' 2014-06-03 17:42:03&# 39; \ n系统信息:主持人:'指向',ip:' 127.0.0.1',os.name:' Mac OS X',os.arch: ' x86_64',os.version:' 10.9.2',java.version:' 1.7.0_51' \ n驱动程序信息:driver.version:EventFiringWebDriver" ; Stacktrace:

在selenium网格控制台上,我看到第一个selenium会话已关闭,但所有其他会话都存在。

我确定每次测试只有一个驱动程序实例。 我运行与多处理模块支持并行的测试:

for n in range(N):
    p = multiprocessing.Process(target=worker_wrapper, args=(compiled_cmd,))
    jobs.append(p)
    p.start()
    time.sleep(3)

for j in jobs:
    j.join()
    if j.exitcode != 0:
        sys.exit(1)

我对我的问题有任何建议。

2 个答案:

答案 0 :(得分:0)

听起来好像你的驱动程序存储了静态或某种全局变量。

发布初始化代码可能会显示问题

答案 1 :(得分:0)

通过移动linux平台(Ubuntu)来解决问题。