Не совсем ответ на ваш вопрос. Но я нашел эту ссылку очень полезной.
Также я вижу, что вы пытаетесь включить опции dir пользователя. На самом деле, это не требуется, поскольку при запуске chromedriver.exe
создается временный каталог.
Познакомьтесь с опциями chromedriver.exe
- chromedriver.exe -h
.
Смотрите пример ниже, который прекрасно работает на моем конце. Кроме того, я предпочитаю использовать пути без пробелов в windows, это помогает сделать вещи простыми. Если вы используете --verbose
вместо --log-level=INFO
, вы получите все журналы.
В журнале chromedriver вы можете видеть аргументы по умолчанию, данные для chromedriver.exe
.
import time, os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
exePath = './driver/chromedriver.exe'
logPath = os.path.join(os.getcwd(),'logs','chromedriver.log')
serviceArgs = ["--log-level=INFO", "--readable-timestamp", "--append-log"]
# service = Service(executable_path=exePath, log_path=logPath, service_args=serviceArgs)
service = Service(log_path=logPath, service_args=serviceArgs)
service.start()
print(service.service_url)
print(service.process.pid)
# driver = webdriver.Remote(service.service_url)
# Update to remove infobars and save password popups
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
prefs = {"profile.password_manager_enabled": False, "credentials_enable_service": False}
options.add_experimental_option("prefs", prefs)
caps = options.to_capabilities()
driver = webdriver.Remote(service.service_url, desired_capabilities=caps)
# driver = webdriver.Remote('http://localhost:63404')
driver.get('http://www.google.com/')
driver.maximize_window()
time.sleep(3) # Let the user actually see something!
driver.get("https://github.com")
time.sleep(3)
driver.back()
time.sleep(3)
driver.close()
driver.quit()
service.stop()
service.stop()
завершает chromedriver.exe
, иначе он будет продолжать работать в фоновом режиме.
Структура папок на моем конце выглядит следующим образом:
rootDir
--driver/chromedriver.exe
--testchromedriver.py (with above code)
Также, создается как killchromedriver.py
файл для завершения всех chromedriver.exe
экземпляров в случае, если они работают в фоновом режиме.
import psutil # pip install psutil
for process in psutil.process_iter():
if(process.name() == 'chromedriver.exe'):
process.terminate()
print('chromedriver.exe was running and is now terminated')
Обновление: добавление опций для удаления информационной панели и сохранения всплывающих окон с паролями