【发布时间】:2021-05-09 22:30:03
【问题描述】:
react_on_video = (input("React: ")).upper()
video_link = "https://www.youtube.com/watch?v=blablabla"
(After login with my gmail account)
driver.get(video_link)
driver.execute_script("window.scrollTo(0, 300);")
time.sleep(1)
if react_on_video == "LIKE":
Like_button_Full_xpath = "/html/body/ytd-app/div/ytd-page-manager/ytd-watch-
flexy/div[5]/div[1]/div/div[8]/div[2]/ytd-video-primary-info-
renderer/div/div/div[3]/div/ytd-menu-renderer/div[1]/ytd-toggle-button-renderer[1]/a/yt-
icon-button/button/yt-icon"
driver.find_element_by_xpath(Like_button_Full_xpath).click()
if react_on_video == "DISLIKE":
Dislike_button_Full_xpath = "/html/body/ytd-app/div/ytd-page-manager/ytd-watch-
flexy/div[5]/div[1]/div/div[8]/div[2]/ytd-video-primary-info-
renderer/div/div/div[3]/div/ytd-menu-renderer/div[1]/ytd-toggle-button-renderer[2]/a/yt-
icon-button/button/yt-icon"
driver.find_element_by_xpath(Dislike_button_Full_xpath).click()
但是每次都显示No such element exception!
[selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:]
我尝试过使用其他选择器和 xpath;但他们都没有工作!有什么永久的解决办法吗?因为一旦我能够点击这个 xpath 的按钮。我不得不多次更改 xpath。
Like_button_xpath : '//[@id="top-level-buttons"]/ytd-toggle-button-renderer1/a'
Dislike_button_xpath : '//[@id="top-level-buttons"]/ytd-toggle-button-renderer[2]/a'
【问题讨论】:
-
使用完整的 xpath 是一种非常不稳定的识别元素的方法。如果您可以共享页面的完整 HTML,我/我们可能会帮助您编写一个独特且可靠的选择器来识别您想要的元素。
-
你能分享一些 HTML 或截图吗?
-
我添加了截图!
-
非常感谢您的回答和意见!这个 CSS 选择器不是唯一的并且不起作用!您可以自己查看完整的 HTML。只需在浏览器上打开 youtube,然后单击视频!然后检查like按钮。
-
也许谷歌阻止按钮就像在 chromedriver 中一样。我尝试了很多方法,但不再工作了
标签: python selenium web webdriver