【问题标题】:Locate Tweet 'like' button using xPath (Selenium, Python)使用 xPath (Selenium, Python) 找到 Tweet 'like' 按钮
【发布时间】:2020-05-09 11:52:17
【问题描述】:

我正在尝试使用 xPath 定位推文 like 按钮。

如果我去https://twitter.com/BillGates并使用Chrome开发者工具,我可以看到:

  • 第一条推文的点赞按钮位于:

/html/body/div[2]/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[2] /section/div/div/div[1]/div/div/div/div/article/div/div[2]/div[2]/div[2]/div[3]/div[3]/div /div/div[1]/svg/g/path

  • 第一个类似按钮的推文有:

    [很多数字]">

我尝试同时使用 Python + Selenium 和 XPath Helper Chrome 扩展,但两种方法都找不到按钮。

我尝试使用完整的 xPath 以及下面的查询但没有成功:

.find_element_by_xpath("//path[starts-with(@d, 'M')]").click()  

实际上,我无法通过最后一个 div 得到任何东西。 //svg, //g 和 //path 都得到零结果。 //另一方面,div 可以得到 900 多个结果...

如果有人能帮我指出正确的方向,不胜感激。

谢谢!

【问题讨论】:

    标签: selenium xpath twitter


    【解决方案1】:

    我强烈建议不要使用 Twitter 来练习自动化。 无论如何,我已经看到喜欢按钮具有 data-testid 属性,它的值对于您正在寻找的元素是唯一的,因此我们可以轻松获取所有喜欢按钮元素,如下所示:

    //div[@data-testid="like"]
    

    或者像这样使用 css 选择器:

    div[data-testid="like"]
    

    假设你是用 Python 编写的,那么我们可以使用 find_elements 方法来获取列表中的所有元素。

    like_buttons = driver.find_elements_by_xpath("//div[@data-testid="like"]")  
    

    轻松点击任何推文的点赞按钮,

    like_buttons[0].click()  # 0 Is the first tweet, 1 is the 2nd etc...
    

    请注意,您可能需要在此元素上执行悬停,然后单击它, 因此,如果驱动程序找到了该元素,但它不可点击,则一定是它。

    【讨论】:

    • 谢谢,这对我帮助很大。根据您的评论,我让脚本运行起来,并且我设法了解了更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多