Сообщение: элемент не взаимодействует Ошибка при отправке ключей [search_bar.send_keys (имя_курса)] в панель поиска Youtube с использованием selenium python - PullRequest
0 голосов
/ 29 апреля 2020

Я попробовал большую часть решения StackOverflow, но у меня не получилось. Я пытаюсь отправить название курса на панель поиска youtube, используя селен python, раньше он работал нормально, но теперь выдает эту ошибку при этом И search_bar .send_keys (course_name) отлично работает для других сайтов, но не в YT

Traceback (most recent call last):
      File "src/gevent/greenlet.py", line 766, in gevent._greenlet.Greenlet.run
      File "/home/sh4d0w/PycharmProjects/AutoMate/venv/lib/python3.7/site-packages/eel/__init__.py", line 257, in _process_message
        return_val = _exposed_functions[message['name']](*message['args'])
      File "/home/sh4d0w/PycharmProjects/AutoMate/SmallTalk.py", line 72, in SingleQueryinputValue
        RecommendCourse.getUdacityCourse(str(val))
      File "/home/sh4d0w/PycharmProjects/AutoMate/RecommendCourse.py", line 160, in getUdacityCourse
        getYoutubeCourse(course_name, driver)
      File "/home/sh4d0w/PycharmProjects/AutoMate/RecommendCourse.py", line 98, in getYoutubeCourse
        search_bar.send_keys(course_name)
      File "/home/sh4d0w/PycharmProjects/AutoMate/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 479, in send_keys
        'value': keys_to_typing(value)})
      File "/home/sh4d0w/PycharmProjects/AutoMate/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
        return self._parent.execute(command, params)
      File "/home/sh4d0w/PycharmProjects/AutoMate/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
        self.error_handler.check_response(response)
      File "/home/sh4d0w/PycharmProjects/AutoMate/venv/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
      (Session info: chrome=81.0.4044.129)

    2020-04-29T08:00:02Z <Greenlet at 0x7fd2089c67b8: _process_message({'call': 2.1877049007713376, 'name': 'SingleQueryi, <geventwebsocket.websocket.WebSocket object at 0x7)> failed with ElementNotInteractableException

Пример кода

option = webdriver.ChromeOptions()
option.add_argument("window-size=1200x600");
driver = webdriver.Chrome('/usr/bin/chromedriver', options=option)
driver.get("https://www.youtube.com")
getYoutubeCourse(course_name, driver)

getYoutubeCourse () тело функции

def getYoutubeCourse(course_name, driver):
    time.sleep(2)

    search_bar = driver.find_element_by_xpath('//*[@id="search"]')
    search_bar.send_keys(course_name)

    search_bar_button = WebDriverWait(driver, 5).until(EC.element_to_be_clickable(
        (By.XPATH, '//*[@id="search-icon-legacy"]')))
    search_bar_button.click()
    ......

, затем после это, логика c очистки ссылок YouTube есть, я также попробовал веб-драйвер подождите и все, и мои драйверы также обновлены

Пожалуйста, помогите Я новичок в python и селен

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

xpath обнаружил 3 элемента: //*[@id="search"]

Вы должны исправить это до

//input[@id="search"]
0 голосов
/ 29 апреля 2020

Вы можете попробовать это:

from selenium.webdriver.common.keys import Keys
def getYoutubeCourse(course_name, driver):
    time.sleep(2)

    search_bar = driver.find_element_by_xpath('//input[@id="search"]')
    search_bar.send_keys(course_name)

    time.sleep(1)
    search_bar.send_keys(Keys.ENTER)
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...