在PATH中,或在明确提供给webdriver.Chrome()时找不到chromedriver

时间:2019-04-07 12:09:45

标签: selenium selenium-chromedriver

我试图在Windows 10上将chromedriver与Selenium一起使用,但出现以下错误:

Traceback (most recent call last):
  File "scrape.py", line 4, in <module>
    driver = webdriver.Chrome()
  File "C:\Python37\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
    self.service.start()
  File "C:\Python37\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

这是我的测试脚本:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

我尝试了很多事情。我将在下面详细说明。

我试图将路径chromedriver添加到PATH。图片在这里:

enter image description here

这很好,因为我可以从命令行运行chromedriver

C:\Users\KraftWurk>chromedriver
Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

但是,尽管如此,当我运行脚本时,仍然收到chromedriver必须在PATH中的错误信息……它是,所以不确定那里发生了什么。

我已阅读以下内容:Python Selenium Chrome Webdriver

我尝试使用以下方法提供建议的路径:

driver = webdriver.Chrome(executable_path=r"C:\drivers\chromedriver.exe")

我仍然收到相同的警告。

我不太确定发生了什么。我在Windows 10上使用Python3.7。Selenium3.141.0和Chromedriver 74.0.3729.6

1 个答案:

答案 0 :(得分:0)

要消除许多手动工作和不兼容的问题,我建议您选择WebDriverManager,因为它会自动下载所需的二进制文件,并且我们无需设置任何路径。

它支持Chrome,Firefox,PhantomJS,Microsoft Edge或Internet Explorer等浏览器。

我们如何在项目中使用它?

仅需进行设置即可使用“ pip”安装此软件包。

通过pip安装webdriver_manager

就是这样!我们都准备好了。只需将此模块导入您的python项目中,然后开始使用它即可。

对于Chrome:

from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver 
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver.get("http://www.google.com/") 
print driver.title
driver.quit() 

对于Firefox:

from webdriver_manager.firefox import GeckoDriverManager 
from selenium import webdriver
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("http://www.google.com/") 
print driver.title 
driver.quit()

对于Edge:

from webdriver_manager.microsoft import EdgeDriverManager
from selenium import webdriver
driver = webdriver.Edge(executable_path=EdgeDriverManager().install()) 
driver.get("http://www.google.com/") 
print driver.title 
driver.quit() 

对于IE:

from webdriver_manager.microsoft import IEDriverManager
from selenium import webdriver 
driver = webdriver.Ie(executable_path=IEDriverManager().install())   
driver.get("http://www.google.com/") 
print driver.title 
driver.quit()
默认情况下,

webdriver_manager尝试下载给定驱动程序二进制文件的最新版本。要使用特定版本的驱动程序,请按如下所示传递驱动程序版本。

webdriver.Chrome(executable_path=ChromeDriverManager("2.42").install())