Как передать параметры драйверу Selenium Chrome с помощью Python?

В документации Selenium упоминается, что веб-драйвер Chrome может использовать ChromeOptions, но я не могу понять, как создать ChromeOptions,

Я надеюсь передать --disable-extensions флаг для Chrome.

6 ответов

Нашел класс Chrome Options в исходном коде Selenium.

Использование для создания экземпляра драйвера 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)

Вот как я это сделал.

from selenium import webdriver

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

chrome = webdriver.Chrome(chrome_options=chrome_options)

Код, который отключает расширения Chrome для тех, кто использует DesiredCapabilities для установки флагов браузера:

desired_capabilities['chromeOptions'] = {
    "args": ["--disable-extensions"],
    "extensions": []
}
webdriver.Chrome(desired_capabilities=desired_capabilities)
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())

И желаемые_capabilities, и options.to_capabilities() являются словарями. Вы можете использовать метод dict.update(), чтобы добавить параметры в основной набор.

Если вы используете обычный хромдрайвер:

      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')

Вот как я это сделал, поскольку мне нужна была соответствующая версия Chrome. Сначала убедитесь, что вы установили поддерживаемую версию Chrome. Перейдите на страницу веб-драйвера и отметьте последнюю поддерживаемую версию вашего 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()
Другие вопросы по тегам