我试图用一个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中一切都很好
对于Ubuntu 20,它确实帮助我使用我的系统铬驱动程序,而不是下载的那个:
# chromium which
/snap/bin/chromium
driver = webdriver.Chrome('/snap/bin/chromium.chromedriver',
options=chrome_options)
对于下载的web驱动程序来说,它看起来需要远程调试端口——remote-debugging-port=9222来设置,就像其中一个答案(由Soheil Pourbafrani):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Chrome('<path_to>/chromedriver', options=chrome_options)
更新conf.js中的功能
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['todo-spec.js'],
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--disable-gpu', '--no-sandbox', '--disable-extensions', '--disable-dev-shm-usage']
}
},
};
我也经历过这个问题,提出的解决方案似乎都不起作用。然后我发现问题是我在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)
)
正如在另一个答案中所述:
此错误消息…这意味着ChromeDriver无法启动/生成一个新的WebBrowser,即Chrome浏览器会话。
Among the possible causes, I would like to mention the fact that, in case you are running an headless Chromium via Xvfb, you might need to export the DISPLAY variable: in my case, I had in place (as recommended) the --disable-dev-shm-usage and --no-sandbox options, everything was running fine, but in a new installation running the latest (at the time of writing) Ubuntu 18.04 this error started to occurr, and the only possible fix was to execute an export DISPLAY=":20" (having previously started Xvfb with Xvfb :20&).