python - 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'
它是一个按钮,所以它不应该能够点击吗?
如何点击喜欢/收藏按钮?
解决方案
错误信息:
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.
推荐阅读
- javascript - 内容可见性自动与延迟加载内容性能
- symfony - Symfony Doctrine - 将 CTE 与查询构建器一起使用
- scala - 如何计算 Scala 混合对象序列中的每种类型/种类的对象
- excel - 应用过滤器后如何选择第二个可见行
- java - AWS EC2 Linux 实例 - 合适的文件夹位置来存储经常被 Web 服务器更新和读取的文件
- javascript - 如何从 performance.window.performance.timing 输出中获取性能 KPI?
- javascript - 创建后如何访问某些div类
- javascript - Swagger 编辑器中的 Swagger ui json 导入给出错误:Undocumented TypeError: Failed to fetch on making API calls
- python - How to perform lowpass filtering in RGB images with Discrete Wavelet Transform in Python
- r - Summarise - Error: `n()` must only be used inside dplyr verbs