Python selenium有没有办法单击like按钮(不使用类)?(参考图片)

Python selenium有没有办法单击like按钮(不使用类)?(参考图片),python,selenium,web-scraping,Python,Selenium,Web Scraping,用硒试过几种方法,对我不起作用 bot。通过“[data testid=“like”]”选择器(“[data testid=”like“])查找“\u元素”。单击() bot.通过xpath(//a[@aria label='Like']/*[name()='svg'])查找元素。单击() bot.通过xpath(//a[@role='button'])查找元素。单击() //编辑// 我尝试点击这条推文中的like按钮 我的代码如下 # link is the url above for

用硒试过几种方法,对我不起作用

  • bot。通过“[data testid=“like”]”选择器(“[data testid=”like“])查找“\u元素”。单击()

  • bot.通过xpath(//a[@aria label='Like']/*[name()='svg'])查找元素。单击()

  • bot.通过xpath(//a[@role='button'])查找元素。单击()

  • //编辑// 我尝试点击这条推文中的like按钮

    我的代码如下

    # link is the url above
    for link in stored_links:
                    bot.get(link)
                    bot.find_element_by_xpath("//div[@aria-label='Like']/div/div").click()
                    time.sleep(10)
    

    我还想在您的代码示例中添加一个
    WebDriverWait

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    # link is the url above
    for link in stored_links:
        bot.get(link)
        like_button = WebDriverWait(bot, 10).until(
            EC.presence_of_element_located((By.XPATH, "//div[@aria-label='Like']/div/div")))
    
        like_button.click()
        time.sleep(10)
    
    我使用上面的代码成功地点击了tweet上的Like按钮

    分解此代码示例:

    来自顶部的
    语句——这些语句用于包含我们需要的所有Selenium库
    By
    用于定位器,特别是这里的
    By.XPATH
    WebDriverWait
    expected_conditions
    都用于显式等待,我们在单击之前等待like按钮可见

    WebDriverWait(bot,10)
    声明显式等待的新实例,特别是超时10秒——这意味着,如果在10秒内未满足条件,此方法将失败

    EC.元素的存在是我们正在等待的条件,在这种情况下,我们正在等待某个元素的存在
    By.XPATH,“//div…div”
    指定我们正在等待的元素

    like_button=WebDriverWait(bot,10).until(EC.presence_of_element_located((By.XPATH,“//div[@aria label='like']/div/div”)
    正在等待通过
    //div[@aria label='like']/div]定位的元素的存在。如果在10秒内未找到元素,将抛出
    TimeoutException


    最后,
    WebDriverWait
    返回等待后找到的WebElement——因此,
    like_button
    是我们等待存在的WebElement对象。这就是我们可以通过
    like_按钮来单击按钮的方式。click()
    ,因为我们使用的是在前面的
    WebDriverWait
    步骤中存储的对WebElement的引用。

    它似乎仍然没有单击like按钮,虽然我不认为有多个元素带有
    aria label='Like'
    肯定会引起问题。我提供的XPath对于您发布的HTML是有效的,但是如果没有整个页面的上下文,很难判断出哪里出了问题。如果知道要单击的Like按钮的索引,可以尝试使用要单击的按钮的索引替换
    //div[@aria label='Like'][1]/div/div/svg
    。如果你想要一个更完整的答案,最好是发布一个链接到你正在自动化的页面,或者页面的完整HTML(文本,而不是屏幕截图)。我已经在我试图点击的内容中添加了上面的详细信息!也许这将有助于解决问题!这很有帮助——我只是看了一下页面,我认为您根本不需要单击
    svg
    。我已经把路径缩短了一点,并针对您提供的页面进行了测试,在那里它似乎是有效的。我尝试了两种方法,但似乎对我不起作用。。。tweet仍然不受欢迎(编辑:等一下,我面临一个不同的错误)