如何使用Python向Selenium Chrome驱动程序传递选项?

97

Selenium文档提到Chrome webdriver可以使用 ChromeOptions 实例, 但我不知道如何创建ChromeOptions

我希望将 --disable-extensions 标志传递给Chrome。

6个回答

147

在 Selenium 源代码中找到了 chrome Options 类

使用它来创建 Chrome 驱动程序实例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=chrome_options)

7
这个答案救了我的命。如果对其他人有用的话,要启用ES6 Harmony功能,调用是chrome_options.add_argument("--js-flags=--harmony") - msridhar
16
注意:chrome_options 参数已经被弃用,现在可以使用更简单的 options 参数,例如:driver = webdriver.Chrome(options=chrome_options) - Mike B
嘿,@k107,我在想是否可以做同样的事情,只是有一个变化。我能否使用 chrome_options.add_argument("--enable-extensions") 来启用所有扩展程序,而不是通过(代码)手动添加每个扩展程序?先感谢您! - Joe

16

这就是我做的方式。

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--disable-extensions')

chrome = webdriver.Chrome(chrome_options=chrome_options)

7

以下代码可禁用使用DesiredCapabilities设置浏览器标志的用户的谷歌浏览器扩展程序:

desired_capabilities['chromeOptions'] = {
    "args": ["--disable-extensions"],
    "extensions": []
}
webdriver.Chrome(desired_capabilities=desired_capabilities)

5
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--disable-logging')

# Update your desired_capabilities dict withe extra options.
desired_capabilities.update(options.to_capabilities())
driver = webdriver.Remote(desired_capabilities=options.to_capabilities())

所需的 desired_capabilitiesoptions.to_capabilities() 都是字典。您可以使用 dict.update() 方法将 options 添加到主集合中。


2

如果您使用普通的Chromedriver:

pip3 install selenium

示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def main():
    # Set the path to the chromedriver
    chromedriver_path = "path/to/chromedriver"

    # Create ChromeOptions
    options = Options()

    # Your Options here....
    # options.add_argument("--headless")  # Run in headless mode
    # options.add_argument("--disable-gpu")  # Disable GPU acceleration

    # Create a ChromeDriver
    driver = webdriver.Chrome(executable_path=chromedriver_path, options=options)

    # Open Website
    driver.get("https://www.google.com")

    # your code.. clicking on buttons etc..

    # Close the ChromeDriver
    driver.quit()

if __name__ == "__main__":
    main()

如果您使用未检测到的chromedriver:

pip3 install undetected-chromedriver

示例代码:

import undetected_chromedriver as uc


def main():
    # Set the path to the chromedriver executable
    chromedriver_path = "path/to/chromedriver"

    # Create options object
    options = uc.ChromeOptions()

    # Add options if needed
    # options.add_argument("--headless")  # Run in headless mode
    # options.add_argument("--disable-gpu")  # Disable GPU acceleration

    # Create an instance of Undetected ChromeDriver with options
    driver = uc.Chrome(executable_path=chromedriver_path, options=options)

    try:
        # Open Google
        driver.get("https://www.google.com")

        # Rest of your code for interacting with the Google page

    except Exception as ex:
        print(ex)

    finally:
        # Close the ChromeDriver
        driver.quit()

if __name__ == "__main__":
    main()

以下是我经常使用的一些 Chrome 选项:

    options.add_argument(f"--window-size=1366,768")
    options.add_argument(f'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36')
    options.add_argument('--disable-blink-features=AutomationControlled')
    options.add_argument("--disable-extensions")
    options.add_argument("--proxy-server='direct://'")
    options.add_argument("--proxy-bypass-list=*")
    options.add_argument('--ignore-certificate-errors')
    options.add_argument("--password-store=basic")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-extensions")
    options.add_argument("--enable-automation")
    options.add_argument("--disable-browser-side-navigation")
    options.add_argument("--disable-web-security")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-infobars")
    options.add_argument("--disable-gpu")
    options.add_argument("--disable-setuid-sandbox")
    options.add_argument("--disable-software-rasterizer")

    options.add_argument(f"--user-data-dir=PATH_TO_CHROME_PROFILE")
    options.add_argument('--proxy-server=IP_ADRESS:PORT')

0
这是我做的方法,因为我需要一个与Chrome匹配的版本。首先,确保你安装了一个支持的Chrome版本。进入webdriver页面,选择你的Chrome的最新支持版本。然后运行(用你的版本替换)。
npx @puppeteer/browsers install chrome@114.0.5735.90

然后,安装自动安装程序,以下内容应该可以直接使用:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless=new')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=options)
try:
    driver.get("https://www.google.com")
    print("Page title was '{}'".format(driver.title))
finally:
    driver.quit()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接