【问题标题】:ChromeDriver executable needs to be available in the pathChromeDriver 可执行文件需要在路径中可用
【发布时间】:2014-10-21 01:37:09
【问题描述】:

我正在使用 selenium webdriver python 绑定 unittest 框架。当我重复它们时,我的测试开始失败。我的套件中有大约 100 个测试用例。

循环三遍后出现如下错误提示

Traceback (most recent call last):          
File "TestPlan.py", line 26, in setUp  
self.driver=self.OpenBrowser(self.configDic['BrowserOption='])
File "D:\AutoTest-Selenium\Controller.py", line 85, in OpenBrowser
File "C:\Python27\lib\selenium\webdriver\chrome\webdriver.py", line 59, in __init__   
WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.  
Please download from http://chromedriver.storage.googleapis.com/index.html               
and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'  

我的setUp类和tearDown方法如下:

def setUp(self):            
    self.driver=self.OpenBrowser(self.configDic['BrowserOption=']) 

def tearDown(self): 
    self.driver.quit()     

我还在任务管理器中找到了一些 Chromedriver 进程。这就是显示错误消息的原因吗?我一直注意在使用它们后关闭每个 webdriver 实例。这种情况有什么解决方法吗?

谢谢大家的帮助。

【问题讨论】:

  • 错误信息和堆栈是什么?
  • @bcar 这个问题似乎无法解决。找到了类似的问题link
  • 我试图详细说明这个错误是如何发生的;你用鼻子运行这些测试吗?如果没有,你是如何“重复”这些测试的?

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

在 Ubuntu 12.04 和 Ubuntu 14.04 上有 “ChromeDriver 可执行文件需要在路径中可用。” 错误。

这样解决:

sudo -i
wget http://chromedriver.storage.googleapis.com/2.15/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /usr/local/bin
chmod 755 /usr/local/bin/chromedriver

【讨论】:

    【解决方案2】:

    由于您的问题和后来的 cmets 表明您可以运行近 300 个测试(证明 chromedriver 在您的 PATH 中),我猜这个问题有两个方面:

    1. selenium ChromeDriver executable need to be available in the path 是假的。
    2. 如果该错误不存在,它很可能会告诉您打开的文件太多

    请参阅我的more detailed StackOverflow answer,了解所涉及的根本问题。解决问题:

    • 增加打开文件的最大数量...或...
    • 添加关闭stdoutstderr的调用

      site-packages/selenium/webdriver/chrome/service.py

    try:
        if self.process:
            self.process.stdout.close()  # <-- add this line
            self.process.stderr.close()  # <-- and this one
            self.process.kill()
            self.process.wait()
    except OSError:
        # kill may not be available under windows environment
        pass
    

    【讨论】:

    • fwiw,这个答案不再相关。 service.py 中的代码已被重构和修复,因此它不会泄漏文件句柄。
    猜你喜欢
    • 1970-01-01
    • 2015-07-03
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多