Как отключить всплывающие окна Chrome во время выполнения автоматизированных тестов Selenium на Python?
В настоящее время я пишу набор автоматизированного тестирования для большого Django-проекта для своей корпорации. Все шло хорошо, пока я не обновил Chrome (v.125.0.6422.142) и Chromedriver (v.125.0.6422.141). Когда я запустил тесты, из вертикального многоточия, открывающего меню Chrome, выскочила подсказка Chrome:
Я проверил с помощью пользовательского GPT (используя GPT-4), чтобы узнать, вызывает ли это потенциальные проблемы, и получил подтверждение (чего бы это ни стоило), что это всплывающее окно действительно вызывает помехи в моих тестах. Однако я не знаю, как от него избавиться.
Я просмотрел Stack OverFlow, GPT и Github Copilot, и внедрил следующие аргументы в свою установку:
def setUpClass(cls):
super().setUpClass()
if os.environ.get('ENVIRONMENT') == 'LOCAL':
# Retrieve the path from an environment variable
chromedriver_path = os.environ.get('CHROMEDRIVER_PATH')
if not chromedriver_path:
raise ValueError("The CHROMEDRIVER_PATH environment variable must be set.")
chrome_service = Service(executable_path=chromedriver_path)
# Option to run in headless mode
if os.environ.get('HEADLESS') == 'True':
print("Running in headless mode.")
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--enable-logging')
cls.selenium = webdriver.Chrome(service=chrome_service, options=chrome_options)
else:
chrome_options = Options()
chrome_options.add_argument('--disable-first-run-ui')
chrome_options.add_argument('--no-first-run')
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--enable-logging')
chrome_options.add_argument('--disable-popup-blocking')
chrome_options.add_argument('--disable-notifications')
chrome_options.add_argument('--disable-infobars')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
cls.selenium = webdriver.Chrome(service=chrome_service, options=chrome_options)
cls.selenium.maximize_window()
print("Running in headful mode")
Условные утверждения вызваны логикой реализации DevOps (мы - младшие разработчики в стартапе), и я обычно запускаю тесты в режиме "Headful Mode". Независимо от того, что я реализовал, всплывающее окно все равно появляется и мешает моим тестам. Даже простой выбор кнопки с XPATH не работает и постоянно вылетает или выбрасывает эту неясную ошибку, в которой я не смог найти ничего полезного, кроме потенциальной нестыковки между Chromedriver и Chrome:
[13860:24408:0604/071320.491:ERROR:interface_endpoint_client.cc(722)] Сообщение 0 отклонено интерфейсом blink.mojom.WidgetHost
Однако, учитывая версии ChromeDriver и Chrome, я твердо уверен, что именно это всплывающее окно является причиной моих проблем. Любая помощь будет оценена по достоинству!
Одним из способов предотвратить появление этого всплывающего окна является запуск в режиме инкогнито:
chrome_options.add_argument("--incognito")
Также эффективен гостевой режим:
chrome_options.add_argument("--guest")