我一直很难让Python中依赖 selenium 的程序工作(当他们过去做的时候)。
#Loading Webdriver
options = webdriver.ChromeOptions()
# options.add_argument('--headless')
#Set download folder to newly created folder
prefs = {"download.default_directory" : newfilepath}
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(executable_path=r'C:\Users\ujcho\Desktop\chromedriver.exe', options=options)
wait = WebDriverWait(driver,10)
#Calibrate url to find corresponding file in Karpel
url = "[insert url link here]"
driver.get(url)
login(driver)
出于某种原因,当添加无头参数时,程序似乎工作得很好。但是当这一行被注解掉时,我得到了以下错误:
Traceback (most recent call last):
File "c:\Users\ujcho\Desktop\StanfordLabs2\test.py", line 80, in <module>
driver = webdriver.Chrome(executable_path=r'C:\Users\ujcho\Desktop\StanfordLabs2\chromedriver.exe', options=options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ujcho\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 84, in __init__
super().__init__(
File "C:\Users\ujcho\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 104, in __init__
super().__init__(
File "C:\Users\ujcho\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 286, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Users\ujcho\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 378, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ujcho\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute
self.error_handler.check_response(response)
File "C:\Users\ujcho\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited normally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
在过去,上面的代码会打开一个新窗口,其中剩下的程序会自动执行我指示它执行的过程。现在,它只是在一个当前窗口上打开一个空的选项卡,上面有“数据;”在URL栏中。
我不知道这是否与我目前提出的问题有关,但自从我被提示更新我的ChromeDriver到113,Selenium刚刚在我身上崩溃了。任何帮助都将不胜感激。。我尝试重新安装Google Chrome,但没有成功。
你建议使用什么Web浏览器来进行Python Selenium(特别是Windows 11?好奇的是,Chrome可能不是它。
1条答案
按热度按时间72qzrwbm1#
该特定错误(
DevToolsActivePort file doesn't exist
)通常发生在权限问题时。(例如https://stackoverflow.com/a/50642913/7058266-但该解决方案适用于Linux用户,而您使用的是Windows。如果将
download.default_directory
设置为Selenium没有访问权限的文件夹,则可能会出现错误。你还提到你“被提示将我的ChromeDriver更新到113”。主要浏览器版本和主要驱动程序版本应该匹配,以便工作。许多Selenium框架都有一个驱动程序管理器来下载正确的驱动程序以匹配您的浏览器,其中一些框架默认设置了特定的命令行选项来解决权限问题。
例如SeleniumBase,(
pip install seleniumbase
),然后使用python
运行以下脚本:此外,默认的下载文件夹将是
downloaded_files/
,这是SeleniumBase所独有的,并且将与标准下载文件夹分开。