selenium.common.exceptions.ElementNotInteractableException - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь создать скрипт на python, который автоматически нажимает кнопки на YouTube. Я прочитал документацию по селену на их сайте для python, но, как и в большинстве других документов, она написана людьми с продвинутым уровнем понимания ДЛЯ людей с продвинутым уровнем понимания ... поэтому я пытаюсь научиться самостоятельно, они могли бы также говорить по-марсиански.

Я потратил час на то, чтобы заставить geckodriver работать, и, наконец, добился успеха, заставив его вызвать и открыть Firefox на нужной странице, но конкретную кнопку, которую я обнаружил (используя функцию Firefox «Inspect Element»), не удалось прокрутить в вид "


driver = webdriver.Firefox()

driver.get('https://www.youtube.com/playlist?list=PLMFoDoF5WCjivNyZjSOWfzjD4TyFbvqhu')

element = driver.find_element_by_id("button")

element.click()

То, что я ожидал, это открыть эту ссылку на страницу и нажать кнопку «три точки» под названием списка воспроизведения, чтобы открыть раскрывающееся меню с другой кнопкой. Вместо этого он говорит мне, что его нельзя прокрутить в поле зрения.

  File "C:/"omitted"jasdbfab.py", line 9, in <module>
    element.click()
  File "C:\"omitted"\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\"omitted"\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\"omitted"\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\"Omitted"\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <button id="button" class="style-scope yt-icon-button"> could not be scrolled into view

Итак ... что дает? Почему я тупой?

1 Ответ

0 голосов
/ 25 июня 2019

На странице есть десятки элементов с @id="button". Вам нужно использовать более конкретный локатор. Попробуйте под строкой нажать нужную кнопку:

driver.find_element_by_xpath('//*[@id="top-level-buttons"]/following-sibling::*/button[@id="button"]').click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...