Есть ли страницы, которые нельзя автоматизировать с помощью Selenium? [Дубликат]

1
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("chrome://settings")

advanced = driver.find_element_by_css_selector("#advancedToggle > span")
advanced.click()

Вышеприведенный код не работает. Чтобы узнать, к чему относится эта расширенная переменная, вы можете перейти к вставке "chrome://settings" в ваш браузер (работает только в том случае, если вы используете хром) и прокручивать вниз, где вы видите переключатель "Дополнительно".

У этого переключателя даже есть id "advancedToggle" но я не могу найти что-либо на этой странице любым методом (id, class, css, xpath).

Возможно ли, что некоторые страницы просто устойчивы к автоматизации (если это правильный термин)? Если да, есть ли способ определить, на каких страницах нельзя автоматизировать?

Я поставил этот последний вопрос в цитате блока, потому что этот вопрос был отмечен как дубликат, но пока этот пример появился где-то еще, я не думаю, что был ответ на вопрос в блоке...

Теги:
selenium

1 ответ

2
Лучший ответ

Вы должны использовать /deep/ для прохождения через shadow-root элемент:

body /deep/ #advancedToggle > span

Код будет выглядеть так:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("chrome://settings")

advanced = driver.find_element_by_css_selector("body /deep/ #advancedToggle > span")
advanced.click()

Элемент Shadow-root выглядит следующим образом:

Изображение 174551

вы можете найти его, нажав F12 а затем перейдите на вкладку " Elements ". Затем в DOM вы найдете shadow-root.

  • 0
    Спасибо! но как мне узнать, есть ли у страницы элемент shadow-root ? Я не вижу shadow-root в исходном коде страницы. Извините, если этот вопрос кажется довольно элементарным!
  • 0
    Я добавил скриншот и объяснение. Примечание: не каждая страница имеет корневые элементы.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню