首页 > 解决方案 > Selenium 在推特上点赞

问题描述

使用 selenium 在推文上单击“喜欢”的最新和最新方式是什么?

从 css 看来,我需要点击这个:

<div aria-haspopup="false" aria-label="131310 Likes. Like" role="button" data-focusable="true" tabindex="0" class="css-18t94o4 css-1dbjc4n r-1777fci r-11cpok1 r-1ny4l3l r-bztko3 r-lrvibr" data-testid="like">

这可以在个人资料页面上找到。我的目标不是完全像个人资料页面上的推文,但如果我能弄清楚这一点,我就能弄清楚我真正想要做什么。

我尝试了很多方法,但这是我最近的方法:

like_btn = (By.XPATH, ("//div[@data-testid='like', @class='css-18t94o4 css-1dbjc4n r-1777fci r-11cpok1 r-1ny4l3l r-bztko3 r-lrvibr']"))

like_btn = (By.XPATH, ("//div[@data-testid='like'"))

Xpath 的副本:

like_btn = (By.XPATH, ("//*[@id='react-root']/div/div/div/main/div/div/div/div[1]/div/div[2]/div/div/div[2]/section/div/div/div/div[3]/div/article/div/div[2]/div[2]/div[4]/div[3]/div"))

完整 xpath 的副本:

like_btn = (By.XPATH, ("/html/body/div/div/div/div/main/div/div/div/div[1]/div/div[2]/div/div/div[2]/section/div/div/div/div[3]/div/article/div/div[2]/div[2]/div[4]/div[3]/div"))

然后该方法使用:

def like_user_tweets(self, user_tweets=UserStatuses.like_btn):
    self.like_btn.click()

看起来 twitter 最近对所有内容都进行了改进,因为即使是一年或更早之前的 github 代码也使用“HeartAnimation”类来查找“like”按钮,但它似乎不再存在。

错误:AttributeError: 'NoneType' object has no attribute 'click'

它是一个按钮,所以它不应该能够点击吗?

如何点击喜欢/收藏按钮?

标签: pythonseleniumselenium-chromedriver

解决方案


错误信息:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: 
Element <div aria-label="394 Likes. Like" role="button" tabindex="0" 
data-testid="like">...</div> is not clickable at point (539, 10). 

Other element would receive the click: <div class="css-1dbjc4n r-1habvwh">...</div>

解决方案:

browser = webdriver.Chrome()
infoq_url = 'https://twitter.com/infoqchina'
browser.get(infoq_url)
sleep(2)

like_buttons = browser.find_elements(By.XPATH, '//div[@data-testid="like"]') 
like_btn = like_buttons[0]
like_svg = like_btn.find_element(By.TAG_NAME, "svg")
like_svg.click()

参考:

btn_parent = btn.find_element(By.XPATH, "..")  # find parent element.

推荐阅读