默认情况下,chrome将使用以下命令行运行:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-hang-monitor --disable-prompt-on-repost --dom-automation --full-memory-crash-report --no-default-browser-check --no-first-run --disable-background-networking --disable-sync --disable-translate --disable-web-resources --safebrowsing-disable-auto-update --safebrowsing-disable-download-protection --disable-client-side-phishing-detection --disable-component-update --disable-default-apps --enable-logging --log-level=1 --ignore-certificate-errors --no-default-browser-check --test-type=ui --user-data-dir="C:\Users\nik\AppData\Local\Temp\scoped_dir1972_4232" --testing-channel=ChromeTestingInterface:1972.1 --noerrdialogs --metrics-recording-only --enable-logging --disable-zero-browsers-open-for-tests --allow-file-access --allow-file-access-from-files about:blank
我需要重写(删除)所有命令--disable-*,因为没有等效命令--enable-*。
--disable-*
--enable-*
最后,我要使用以下命令行运行浏览器:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --dom-automation --full-memory-crash-report --no-first-run --safebrowsing-disable-auto-update --safebrowsing-disable-download-protection --enable-logging --log-level=1 --ignore-certificate-errors --test-type=ui --user-data-dir="C:\Users\nik\AppData\Local\Temp\scoped_dir1972_4232" --testing-channel=ChromeTestingInterface:1972.1 --noerrdialogs --metrics-recording-only --enable-logging --allow-file-access --allow-file-access-from-files about:blank
例如,我尝试使用翻译信息栏运行浏览器。我找到了选择--enable-translate。
--enable-translate
capabilities = DesiredCapabilities.CHROME.copy() capabilities['chrome.switches'] = ['--enable-translate']
但这没有帮助,信息栏不会出现。在命令行中,有两个命令:--disable-translate和--enable- translate。这是因为有必要删除该命令--disable-default-apps
--disable-translate
--enable- translate
--disable-default-apps
您应该 自己启动浏览器 ,然后告诉selenium,您已经通过 传递特殊通道id 启动了它。像这样:
from random import randrange channel_id = "%032x" % randrange(16**32) from subprocess import Popen # HERE YOU PASS ONLY THOSE PARAMETERS YOU WANT (i.e. without --disable-*) # BUT YOU MAY NEED --dom-automation FOR SOME ROUTINES chrome = Popen(" ".join([ PATH_TO_CHROME_EXE, "--no-first-run", "--dom-automation", ("--testing-channel=\"NamedTestingInterface:%s\"" % channel_id), ])) try: from selenium.webdriver.chrome.service import Service chromedriver_server = Service(PATH_TO_CHROMEDRIVER, 0) chromedriver_server.start() from selenium.webdriver import Remote driver = Remote(chromedriver_server.service_url, {"chrome.channel": channel_id, "chrome.noWebsiteTestingDefaults": True}) driver.get(MY_WEBPAGE) # DO YOUR WORK finally: chromedriver_server.stop() driver.quit() chrome.kill() chrome.wait()