Selenium не может найти элемент с помощью XPath

Я пытаюсь найти элемент с помощью Xpath с Selenium.

Рассматриваемый элемент - это название канала на странице YouTube: https://www.youtube.com/watch?v=FSyAehMdpyI&list=PL8dPuuaLjXtPHzzYuWy6fYEaX9mQQ8oGr

Мой xpath:

/html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[3]/div[1]/div/div[7]/div[3]/ytd-video-secondary-info-renderer/div/div[2]/ytd-video-owner-renderer/div[1]/div/yt-formatted-string/a

На панели инструментов разработчика на странице YouTube мне удалось найти элемент, введя Xpath. Но когда я пытаюсь найти его в своем скрипте Python, время операции истекает.

channel_name = self.wait.until(EC.presence_of_element_located((By.XPATH,"/html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[3]/div[1]/div/div[7]/div[3]/ytd-video-secondary-info-renderer/div/div[2]/ytd-video-owner-renderer/div[1]/div/yt-formatted-string/a"))).text

Есть идеи, почему?


person I Like    schedule 09.11.2018    source источник
comment
Попробуйте более простой Xpath //ytd-video-owner-renderer/div/div/yt-formatted-string/a   -  person wp78de    schedule 09.11.2018


Ответы (2)


Попробуй это,

Относительный путь - //yt-formatted-string[@id='owner-name']//a[contains(text(),'CrashCourse')]

Это сработало для меня, надеюсь, это поможет вам!

person koushick    schedule 09.11.2018

Вы можете использовать более простой относительный xpath для извлечения имени канала с помощью метода visibility_of_element_located() и использовать любое из следующих решений:

  • Использование text:

    channel_name = self.wait.until(EC.visibility_of_element_located((By.XPATH,"//div[@id='owner-container']/yt-formatted-string[@id='owner-name']/a"))).text
    
  • Использование get_attribute():

    channel_name = self.wait.until(EC.visibility_of_element_located((By.XPATH,"//div[@id='owner-container']/yt-formatted-string[@id='owner-name']/a"))).get_attribute("innerHTML")
    
person DebanjanB    schedule 09.11.2018