加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何在selenium中覆盖默认的chrome命令行开关集

发布时间:2020-12-20 11:26:54 所属栏目:Python 来源:网络整理
导读:默认情况下,将使用此命令行运行chrome: "C:Program Files (x86)GoogleChromeApplicationchrome.exe"--disable-hang-monitor--disable-prompt-on-repost--dom-automation--full-memory-crash-report--no-default-browser-check--no-first-run--disable-
默认情况下,将使用此命令行运行chrome:

"C:Program Files (x86)GoogleChromeApplicationchrome.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:UsersnikAppDataLocalTempscoped_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- *.

最后,我想用这个命令行运行浏览器:

"C:Program Files (x86)GoogleChromeApplicationchrome.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:UsersnikAppDataLocalTempscoped_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.

capabilities = DesiredCapabilities.CHROME.copy()
capabilities['chrome.switches'] = ['--enable-translate']

但这并没有帮助,infobar没有出现.在命令行中,有两个命令: – 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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读