在本文中,我们将带你了解在不打开可执行文件的情况下查找过时的ChromeDriver版本(Python)在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的'chromedriver'可执行文
在本文中,我们将带你了解在不打开可执行文件的情况下查找过时的 ChromeDriver 版本 (Python)在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的'chromedriver' 可执行文件需要在 PATH 中将 chromedriver 添加到我的 PATH 后、centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目、ChromeDriver 错误:“chromedriver”可执行文件需要在 PATH 中、ChromeDriver 默认下载目录在 ChromeDriver v89,90 中不起作用。
本文目录一览:- 在不打开可执行文件的情况下查找过时的 ChromeDriver 版本 (Python)
- 'chromedriver' 可执行文件需要在 PATH 中将 chromedriver 添加到我的 PATH 后
- centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目
- ChromeDriver 错误:“chromedriver”可执行文件需要在 PATH 中
- ChromeDriver 默认下载目录在 ChromeDriver v89,90 中不起作用
在不打开可执行文件的情况下查找过时的 ChromeDriver 版本 (Python)
如何解决在不打开可执行文件的情况下查找过时的 ChromeDriver 版本 (Python)
本质上,我试图在没有实际打开的情况下找到 ChromeDriver 版本。原因是我想自动更新驱动程序。我已经整理了代码以进行更新。
问题是,当我故意下载不受支持的版本来检查我的代码是否有效时,它会显示“此驱动程序仅支持 Chrome 版本 86,而您使用的是 88.001.xyz”等。
我想知道是否有任何方法可以从 ChromeDriver 可执行文件中读取 86,以便我可以识别它不等于 88(我的 Chrome 浏览器版本)?通过这样做,它会触发一个程序去下载正确的 chromedriver。
我附上了用于检查 chromedriver 版本的代码。我试过无头,但我确定它不起作用。
def get_chrome_version():
global browser_version_number
options = Options()
options.headless = True
browser_version_driver = webdriver.Chrome("chromedriver_win32/chromedriver.exe",chrome_options=options)
# browser_version_driver = webdriver.Chrome("chromedriver_win32/chromedriver.exe")
# browser_version_driver.set_window_position(-10000,0)
browser_version_number = (browser_version_driver.capabilities[''browserVersion''])
browser_version_number = browser_version_number.split(".")[0]
chromedriverversion = browser_version_driver.capabilities[''chrome''][''chromedriverVersion''].split(''.'')[0]
print(browser_version_number)
print(chromedriverversion)
if browser_version_number != chromedriverversion:
update_chrome_version()
browser_version_driver.quit()
解决方法
您可以让您的 Python 脚本进行 shell 调用以执行命令 ./chromedriver --version
(使用相关路径),然后解析结果以找到您当前安装的版本。
好的,所以我找到了解决方案。这一切都在终端输出的异常之内。基本上我的想法是将异常作为字符串保存到变量中。一旦我能做到这一点,我就可以将其拆分并从中获取所需的东西。这真的很容易做到,因为 ChromeDriver 开发人员收到了以下异常消息:
Message: session not created: This version of ChromeDriver only supports Chrome version 86
Current browser version is 88.0.4324.xyz with binary path C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe
所以我需要用 86 来表示 ChromeDriver 版本,用 88 来表示浏览器版本。我已经包含了下面的代码。如果您有任何问题,请随时发表评论!我也知道我可能会因为我写的绝对意大利面代码而被钉在十字架上:)。我只是想弄点东西出来,然后把衬衫上的番茄酱清理干净!!
import logging
logger = logging.Logger(''catch_all'')
def get_chrome_version():
global browser_version_number
try:
browser_version_driver = webdriver.Chrome("chromedriver_win32/chromedriver.exe")
browser_version_number = (browser_version_driver.capabilities[''browserVersion''])
browser_version_number = browser_version_number.split(".")[0]
chromedriverversion = browser_version_driver.capabilities[''chrome''][''chromedriverVersion''].split(''.'')[0]
print(browser_version_number)
print(chromedriverversion)
if browser_version_number != chromedriverversion:
update_chrome_version()
browser_version_driver.quit()
###############---------------REALLY IMPORTANT PART BELOW---------------###############
except Exception as e:
e = str(e) # Saves exception to a variable. Most importantly,converts to string to allow me to manipulate it.
print(e)
linesplit = e.split(''This version of ChromeDriver only supports Chrome version '')[1]
checking_driverversion = linesplit.split(''\\n'')[0]
print(checking_driverversion) # prints ''86'' which is my chromedriver right now
checking_browserversion = linesplit.split(''\\n'')[1]
checking_browserversion = checking_browserversion.split(''Current browser version is '')[1]
checking_browserversion = checking_browserversion.split(''.'')[0]
print(checking_browserversion) # prints ''88'' which is my browser version right now
browser_version_number = checking_browserversion
if checking_browserversion != checking_driverversion:
update_chrome_version()
'chromedriver' 可执行文件需要在 PATH 中将 chromedriver 添加到我的 PATH 后
如何解决''chromedriver'' 可执行文件需要在 PATH 中将 chromedriver 添加到我的 PATH 后
我花了几个小时试图让这个工作无济于事。我正在尝试运行此测试脚本:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.nytimes.com")
headlines = driver.find_elements_by_class_name("story-heading")
for headline in headlines:
print(headline.text.strip())
我已经安装了 selenium 并下载了 chromedriver,并使用 sudo nano /etc/paths
将其添加到我的 PATH 并添加了输入路径 /Users/Myname/Desktop/chromedriver。我关闭了终端并使用 echo $PATH 进行了检查,该路径显示在我的 PATH 中,所以我确定它在那里,并且 /Users/Myname/Desktop/chromedriver 是我的 chromedriver exe 文件的位置。但是,当我运行上面的 .py 脚本时,它返回“''chromedriver'' 可执行文件需要在 PATH 中。”我不知道还能尝试什么。
任何帮助将不胜感激。谢谢!
解决方法
您必须在函数调用中添加 *.exe
或 chromedriver.exe
的实际路径,无需将其添加到您 PC 的 PATH 变量中。
注意:只是为了澄清,例如
driver = webdriver.Chrome("/Users/Myname/Desktop/chromedriver.exe") # In Actual Add The Path To chromedriver.exe or whatever *.exe in here
只有你知道你的exe所在的位置,所以只需在函数rest中添加exe路径即可。
快乐编码!
centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目
centos7.4 实例
利用 yum 命令安装 google-chrome 超级简单(安装最新版):
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
chromedriver 也下载最新版就好,和Mac 版本一样,我依旧选择这个最新版本:
http://chromedriver.storage.googleapis.com/index.html?path=70.0.3538.16/
Python3.7 之前安装过:
Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录
然后配置一下,就能跑起来 selenium 项目了,当然该 pip install xxx 安装模块就缺什么安装什么了
# 设置 webdriver 参数
options = webdriver.ChromeOptions()
# 设置谷歌浏览器的一些选项
# proxy 代理 options 选项
options.add_argument(r''--proxy--server=http:\\'' + ip)
uas = get_uas()
# 设置user-agent
options.add_argument(''user-agent='' + choice(uas))
# 以 headless 方案运行
options.add_argument(''--headless'')
options.add_argument(''--no-sandbox'')
# options.add_argument(''--disable-dev-shm-usage'')
# 禁用图片访问
# prefs = {"profile.managed_default_content_settings.images": 2}
# options.add_experimental_option("prefs", prefs)
如果不配置 # 以 headless 方案运行
会抛出下面异常
[root@iZwz9117d4ssv2v5oe81m3Z selenium_baidu]# python testRun.py
package_util 初始化
testRun.py:32: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(path, chrome_options=options)
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/python/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/usr/python/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "testRun.py", line 32, in get_url
driver = webdriver.Chrome(path, chrome_options=options)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn''t exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=70.0.3538.16 (16ed95b41bb05e565b11fb66ac33c660b721f778),platform=Linux 3.10.0-693.2.2.el7.x86_64 x86_64)
selenium 代码正确运行:
ChromeDriver 错误:“chromedriver”可执行文件需要在 PATH 中
如何解决ChromeDriver 错误:“chromedriver”可执行文件需要在 PATH 中
我正在尝试使用 selenium 和 Python 单击 HTML 网页上的按钮。每当我运行代码时,我都会收到以下错误:
''chromedriver'' 可执行文件需要在 PATH 中
我正在尝试点击此网站上的“播放”按钮:https://podcasts.apple.com/us/podcast/python-at-the-us-federal-election-commission/id979020229?i=1000522628049
代码:
driver = webdriver.Chrome(executable_path="C:/path/to/chromedriver")
time.sleep(3)
driver.get(''https://podcasts.apple.com/us/podcast/python-at-the-us-federal-election-commission/id979020229?i=1000522628049'')
button = driver.find_element(By.XPATH,''//*[@id="ember99"]/div/div/section/div[1]/div[1]/div/div/button'')
button.click()
解决方法
从错误 ''chromedriver'' executable needs to be in PATH
看来,您的 chromedriver 似乎不在 PATH
环境变量中。根据您的操作系统检查环境路径变量中是否存在 chromedriver 路径。
然后尝试使用以下代码:带有 chromedriver .exe 完整路径的原始字符串。
,
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r''C:\\Users\\Desktop\\chromedriver_win64\\chromedriver.exe'') # complete path with .exe
driver.get(''https://www.google.com'')
由于您使用的是 Windows,您编写的路径应如下所示:
''C:\\\\Studies\\\\PYTHON\\\\Web Scrapers''
Windows 在提及路径时接受“\\\\”。附上截图供您参考!
更新:这是我为抓取网站而编写的代码。你可以在这里查看。
for link in links[:5]:
# Extract the scores
options = Options()
options.add_argument(''--headless'')
options.add_argument(''--no-sandbox'')
path = "C:\\\\Users\\\\lenovo\\\\Documents\\\\chromedriver.exe"
driver = webdriver.Chrome(path,options = options)
driver.get(link)
您可以查看整个代码HERE。
ChromeDriver 默认下载目录在 ChromeDriver v89,90 中不起作用
如何解决ChromeDriver 默认下载目录在 ChromeDriver v89,90 中不起作用
我一直在使用下面的代码在 chromedriver 中设置默认下载目录
System.setProperty("webdriver.chrome.driver","C:\\\\test\\\\chromedriver.exe");
String downloadFilepath = System.getProperty("user.dir");
HashMap<String,Object> chromePrefs = new HashMap<String,Object>();
chromePrefs.put("profile.default_content_settings.popups",0);
chromePrefs.put("download.default_directory",downloadFilepath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs",chromePrefs);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);
cap.setCapability(ChromeOptions.CAPABILITY,options);
WebDriver driver = new ChromeDriver(cap);
代码在 chromedriver-2.38 上运行良好,但是当我尝试在 ChromeDriver-v89 和 v90 上使用相同的代码时,下载目录没有设置为工作区目录,而是将文件下载到 C:\\Users\\下载。 我尝试了很多选项,但无法确定代码中有什么问题
Selenium-server 版本 3.5.3
Chromedriver-2.38 工作正常
Chromedriver-89.0.4389.23 - 不起作用
Chromedriver-90.0.4430.24 - 不起作用
解决方法
如果您的应用程序是 maven
(由 pom.xml
文件建模)或 gradle
(由 build.gradle
文件建模),您可以添加 {{3} } 分别添加到您的 pom.xml
或 build.gradle
以自动导入二进制可执行文件并在运行时将它们的类路径添加到项目中。
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.8.1</version>
</dependency>
或者,您可以使用 bonigarcia webdrivermanager dependency ,一个 Selenium
和 WebDriverManger
的超级 jar,通过将以下存储库和依赖项添加到您的 pom.xml
。
<!-- git-leon maven repository -->
<repositories>
<repository>
<id>git-leon-utils</id>
<url>https://packagecloud.io/git-leon/utils/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!--selenium wrapper-->
<dependencies>
<dependency>
<groupId>com.github.git-leon</groupId>
<artifactId>leonium</artifactId>
<version>1.7</version>
</dependency>
</dependencies>
通过添加 Leonium
作为依赖项,您可以利用 Leonium
WebDriver
的实例
WebDriver firefoxWebDriver = BrowserHandlerFactory.FIREFOX.getDriver();
WebDriver chromeWebDriver = BrowserHandlerFactory.CHROME.getDriver();
WebDriver htmlunitWebdriver = BrowserHandlerFactory.HTMLUNIT.getDriver();
WebDriver phantomjsWebDriver = BrowserHandlerFactory.PHANTOMJS.getDriver();
您也可以分叉 BrowserHandlerFactory
甚至分叉 demonstration repository。它们都可以在 github 上访问。
关于在不打开可执行文件的情况下查找过时的 ChromeDriver 版本 (Python)的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于'chromedriver' 可执行文件需要在 PATH 中将 chromedriver 添加到我的 PATH 后、centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目、ChromeDriver 错误:“chromedriver”可执行文件需要在 PATH 中、ChromeDriver 默认下载目录在 ChromeDriver v89,90 中不起作用等相关知识的信息别忘了在本站进行查找喔。
本文标签: