Как передать параметры драйверу 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()