python - 使用 Python 的 Webdriver Manager 的 Selenium ChromeDriver 问题
问题描述
运行此代码时:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdrivermanager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().download_and_install())
driver.get("http://www.python.org")
这会导致安装 chromedriver 的行出现以下异常:
TypeError:预期的 str、字节或 os.PathLike 对象,而不是元组
请注意,我知道已经存在许多关于此主题的线程,但由于 webdrivermanager 似乎已更新,以前的解决方案不起作用。
还有一个快速的旁注:我通过 conda 而不是 pip 安装了 webdrivermager。但这不应该引起关注。
编辑:整个堆栈跟踪:
回溯(最近一次通话最后):文件“C:\Users\stefa\OneDrive - Johannes Kepler Universität Linz\Dokumente\GitHub\briefly\src\crawler\crawler.py”,第 19 行,在驱动程序 = webdriver.Chrome(ChromeDriverManager ().download_and_install()) 文件“C:\Users\stefa\anaconda3\envs\briefly\lib\site-packages\selenium\webdriver\chrome\webdriver.py”,第 73 行,在init self.service.start( ) 文件“C:\Users\stefa\anaconda3\envs\briefly\lib\site-packages\selenium\webdriver\common\service.py”,第 72 行,在 start self.process = subprocess.Popen(cmd, env= self.env,文件“C:\Users\stefa\anaconda3\envs\briefly\lib\subprocess.py”,第 951 行,在init self._execute_child(args,可执行文件,preexec_fn,close_fds,文件“C:\Users\stefa\anaconda3\envs\briefly\lib\subprocess.py”,第 1360 行,在 _execute_child args = list2cmdline(args) 文件“C:\ Users\stefa\anaconda3\envs\briefly\lib\subprocess.py",第 565 行,在 list2cmdline 中,用于 map(os.fsdecode, seq) 中的 arg:文件“C:\Users\stefa\anaconda3\envs\briefly\lib \os.py", line 822, in fsdecode filename = fspath(filename) # 对
filename
. TypeError: 预期的 str, bytes 或 os.PathLike 对象进行类型检查,而不是元组
解决方案
您的代码块中有两个问题,如下所示:
- 您需要从中导入ChromeDriverManager
webdriver_manager.chrome
- 根据不支持Python
download_and_install()
的 Webdriver Manager,您必须使用install()
因此,您的有效代码块将是:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("http://www.python.org")
在windows-10系统上,控制台输出将是:
C:\Users\Admin\Desktop\Python Programs>python webdriver-manager_ChromeDriverManager.py
[WDM] -
[WDM] - ====== WebDriver manager ======
[WDM] - Current google-chrome version is 95.0.4638
[WDM] - Get LATEST driver version for 95.0.4638
[WDM] - There is no [win32] chromedriver for browser 95.0.4638 in cache
[WDM] - Get LATEST driver version for 95.0.4638
[WDM] - Trying to download new driver from https://chromedriver.storage.googleapis.com/95.0.4638.54/chromedriver_win32.zip
[WDM] - Driver has been saved in cache [C:\Users\Admin\.wdm\drivers\chromedriver\win32\95.0.4638.54]
DevTools listening on ws://127.0.0.1:50921/devtools/browser/c26df2aa-67aa-4264-b1dc-34d6148b9174
您可以在ModuleNotFoundError: No module named 'webdriver_manager' error even after installed webdrivermanager中找到相关的详细讨论
推荐阅读
- javascript - Vue.js 观察者重复输入给出空引用
- dialogflow-es - 如何在 dialogflow fullfilment 中为返回用户管理自定义?
- android - 使用类方法之类的函数
- javascript - 如何通过语义 UI 反应打开多个手风琴?
- javascript - 如何按顺序添加元素数组?
- magnolia - 将所有用户更改为大写的 Groovy 脚本
- prolog - CLP:“不是三个相同值”的有效模型
- html - 我的 .click 方法有时只有效,然后在其他时候出错
- recursion - 递归积 mips32
- java - 你如何序列化地图
或地图 与杰克逊一起进入 XML?