После обновления Chrome и ChromeDriver перестали отрабатываться скрипты

Рейтинг: 0Ответов: 1Опубликовано: 17.05.2023

Сегодня обновил Chrome до 113.0.5672.127, проверил скрипты - ошибка, ВебДрайвер не той версии, что ожидаемо. Скачал ChromeDriver 113.0.5672.63 и скрипты перестали работать, при этом ошибка идет на первой строчке где начинаются манипуляции с элементами на странице - Unable to locate element: {"method": "xpath", "selector":"//iframe"} и тд. Пробовал другие версии ChromeDriver, ничего не помогает. Подскажите в чем может быть проблема?

Дополнение:

Код работал и не менялся месяцами, проблема возникла после обновления Хорма и Драйвера. Стало понятно почему код перестал работать, скрипт теперь блокирует страницу, следовательно и элементов на ней никаких нет. у меня несколько таких страниц и я последовательно их заблокировал данным кодом.

Что удалось отметить: в командной строке при запуске кода на странице в первый раз появляется вот такое сообщение:

DevTools listening on ws://127.0.0.1:52759/devtools/browser/05d5b34e-667c-4beb-a9a8-d87a52a3dd82 [0517/124106.941:INFO:CONSOLE(0)] "Autofocus processing was blocked because a document already has a focused element.", "ссылка"

После чего страница блокируется.

Похоже что проблема вот в этой строке:

chrome_options.add_argument("--headless")

Если убрать эту строчку (запускать невидимым) то все отрабатывается как надо и страницы не блокируются. Началось это все именно после обновления браузера и драйвера.

Код:

from selenium import webdriver
from selenium.webdriver.common.by import By
from datetime import date
import time
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")

repDate = date.today().strftime("%d.%m.%Y")

browser = webdriver.Chrome(options=chrome_options)
myPassword = ''
link1 = ""

browser.get(link1)
browser.implicitly_wait(10)
time.sleep(5)
iframe = browser.find_element(By.XPATH, "//iframe")

Ответы

▲ 1Принят

Ориентируясь на ответ на английском SO:

Chrome 109 и выше:

options.add_argument("--headless=new")

Chrome 96 по Chrome 108):

options.add_argument("--headless=chrome")