我试图在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。图片在这里:
这很好,因为我可以从命令行运行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
答案 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())