我试图用一个URL启动chrome浏览器,浏览器启动后,它什么也不做。
1分钟后我看到如下错误:
Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)
我的配置:
Chrome浏览器:66
ChromeBrowser: 2.39.56
又及,在Firefox中一切都很好
我也经历过这个问题,提出的解决方案似乎都不起作用。然后我发现问题是我在WSL版本1上运行,似乎chromedriver与windows浏览器一起工作,而不是与aptitude安装的浏览器。
为了使它与WSL版本1和版本2兼容,我发现(并在debian WSLv2和ubuntu WSLv1中进行了测试,它可以工作),该平台的版本显示的单词Microsoft的第一个大写字母。
所以解决方案是这样的:
import platform
from selenium.webdriver.chrome.service import Service as ChromeService
from seleniumwire import webdriver
chromedriver = 'chromedriver.exe'
# According to:
# https://stackoverflow.com/a/71879688/7019069
# When using WSL v1 the chromedriver.exe of local chrome of windows is used
# In WSL v2 (updated version) it does work using the installation shown in the README.md)
# And according to
# https://github.com/microsoft/WSL/issues/4555
# It is possible to differentiate the version of WSL by the first uppercase of the platform
# version of Microsoft. Therefore only the linux chromedriver is used if that word is matched
# in the platform of the driver.
if platform.system() == 'Linux' and not re.search(re.escape('Microsoft'), platform.platform()):
chromedriver = 'chromedriver'
driver_path = os.path.join(drivers_path, chromedriver)
service = ChromeService(driver_path)
driver = webdriver.Chrome(
service=service,
options=__get_chrome_options(headless)
)
我遇到了同样的问题,在我的情况下,Linux系统中有两个不同的常见用户userera和userB。
userA第一次运行selinium程序成功启动chrome浏览器,当到达userB时,出现DevToolsActivePort文件不存在的错误。
我尝试了——remote-debug -port=9222选项,但它导致了一个新的异常:
selenium.common.exceptions.WebDriverException: Message: chrome不可达
I run google-chome目录,看到以下错误:
mkdir /tmp/Crashpad/new: Permission denied (13)
我搜索了这个问题,得到了这个:
https://johncylee.github.io/2022/05/14/chrome-headless-%E6%A8%A1%E5%BC%8F%E4%B8%8B-devtoolsactiveport-file-doesn-t-exist-%E5%95%8F%E9%A1%8C/
chrome_options.add_argument(f"--crash-dumps-dir={os.path.expanduser('~/tmp/Crashpad')}")
感谢@johncylee。
我在Ubuntu 20和Python Selenium上遇到了这个问题,我首先单独下载了chromedriver,然后使用sudo apt install chromium-browser,尽管它们是同一个版本,但这种情况一直发生。
我的修复是使用提供的chrome驱动程序,附带的回购包位于
/snap/bin/chromium.chromedriver
driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')