Селен - не могу найти панель поиска YouTube - PullRequest
1 голос
/ 21 апреля 2020

Сообщение об ошибке:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: input.ytd-searchbox

Я продолжаю получать эту ошибку, хотя я добавил команду сна из других решений для динамической загрузки страницы с javascript, но все же это не может найти это?

import time
from selenium import webdriver  
firefox = webdriver.Firefox()
firefox.get("https://www.youtube.com")
element = firefox.find_element_by_css_selector("ytd-mini-guide-entry-renderer.style-scope:nth-child(3) > a:nth-child(1)") # opens subscriptions
element.click()
time.sleep(10) # wait for page to load before finding it
searchelement = firefox.find_element_by_css_selector('input.ytd-searchbox') # search bar

searchelement.send_keys("Cute Puppies")
searchelement.submit()

1 Ответ

2 голосов
/ 21 апреля 2020

Я только что изменил селектор CSS. Вы сделали это неправильно здесь. Хм ... как я это сделал? Ну, есть простой прием для выбора CSS селекторов.

  1. Сначала введите имя тега. В вашем случае это input.
  2. Если здесь присутствует ID, введите имя ID с #. Итак, как я сделал: #search.
  3. Если там есть class, тогда используйте . перед его именем. Например .search.

Попробуйте это. Работает:

import time
from selenium import webdriver  
firefox = webdriver.Firefox(executable_path=r'C:\Users\intel\Downloads\Setups\geckodriver.exe')
firefox.get("https://www.youtube.com")
element = firefox.find_element_by_css_selector(".style-scope:nth-child(1) > #items > .style-scope:nth-child(3) > #endpoint .title") # opens subscriptions
element.click()
time.sleep(10) # wait for page to load before finding it
searchelement = firefox.find_element_by_css_selector('input#search') # search bar

searchelement.send_keys("Cute Puppies")
searchelement.submit()
...