【问题标题】:Selenium Twitter Buttons Not Clicking using xpath and css selectorSelenium Twitter 按钮未使用 xpath 和 css 选择器单击
【发布时间】:2021-06-02 15:09:30
【问题描述】:

所以我正在尝试为 Twitter 制作一个机器人来按下推文上的回复按钮。

我使用过 xPath、完整的 xPath 和 CSS 选择器,但似乎无法让 selenium 来单击按钮。

我试过了:

driver.find_element_by_xpath("//*[@id='react-root']/div/div/div[2]/main/div/div/div/div/div/div[2]/div/section/div/div/div[1]/div/div/article/div/div/div/div[3]/div[5]/div[1]/div/div/div/svg").click
driver.find_element_by_xpath("//div[@aria-label='Reply']").click
driver.find_element_by_css_selector("#react-root > div > div > div.css-1dbjc4n.r-18u37iz.r-13qz1uu.r-417010 > main > div > div > div > div > div > div:nth-child(2) > div > section > div > div > div:nth-child(1) > div > div > article > div > div > div > div:nth-child(3) > div.css-1dbjc4n.r-1oszu61.r-2sztyj.r-1efd50x.r-5kkj8d.r-18u37iz.r-h3s6tt.r-a2tzq0 > div:nth-child(1) > div").click

【问题讨论】:

    标签: python selenium twitter


    【解决方案1】:

    我在您的定位器中发现错误。
    试试这个:

    driver.find_element_by_xpath("//div[@aria-label='Reply']").click
    

    UPD
    你应该使用这个

    //div[contains(@aria-label,'Reply')]
    

    【讨论】:

    • 刚试了一下,我得到了:Message: invalid selector: Unable to locate an element with the xpath expression //div[@aria-label='Reply' because of the following error: SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//div[@aria-label='Reply'' is not a valid XPath expression.
    • 我已经更新了,它丢失了]
    • 但是我在主页上看不到这样的元素
    • 我看到有div[data-testid='reply'] css 选择器位于元素。 XPath 语法中的//div[@data-testid='reply']
    • 添加了],现在它没有点击。当您单击单个推文时,该元素就会出现
    【解决方案2】:

    回复图标是 SVG 格式,试试下面的 xpath :

    //div[contains(@aria-label, 'Reply')]//descendant::*[local-name()='svg']
    

    但是,我可以在我的推特句柄中看到 4 个按钮。可能您需要使用find_elements 将它们存储在列表中。

    类似这样的:

    reply_buttons = driver.find_elements(By.XPATH, "//div[contains(@aria-label, 'Reply')]//descendant::*[local-name()='svg']")
    for reply in reply_buttons:
        if "Your condition here"
            reply.click()
    

    【讨论】:

      【解决方案3】:

      如果你仔细查看回复按钮的父 div 标签,你会发现一个具有唯一标识符的 div 标签 - data-testid="reply" 查看结构,我建议使用提到的属性来获取这个 div。然后嵌套到子 div 标签,然后单击它。 使用您发布的绝对 xpath 并不是最好的选择。

      这是列出所有回复按钮的潜在 xpath。然后你需要找到一种方法来点击那个特定的回复按钮。

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

      【讨论】:

        猜你喜欢
        • 2020-06-17
        • 2021-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 2017-05-24
        • 2011-08-04
        相关资源
        最近更新 更多