【问题标题】:how do I locate the btn by class name?如何按类名定位 btn?
【发布时间】:2019-10-14 18:35:11
【问题描述】:

我有这个 html 代码: <button class="_2ic5v"><span aria-label="Like" class="glyphsSpriteComment_like u-__7"></span></button>

我正在尝试使用 phyton 和 selenium webdriver 库找到符合此类的所有元素: likeBtn = driver.find_elements_by_class_name('_2ic5v')

但是当我打印时 likeBtn 它打印 []

我想找到这个 div/span 类或 aria-label 中的所有按钮

我如何成功地做到这一点?提前致谢

更新 - 当我从页面复制 Xpath 时,打印保持不变

【问题讨论】:

  • 跨页面请求的类名是否相同?如果你得到了页面中的所有按钮,那是你需要的那个按钮吗?
  • “跨页面请求”是什么意思?抱歉不能理解。是的,btn 就是其中之一。

标签: python selenium selenium-webdriver


【解决方案1】:

尝试以下 Xpath Option 这将找到包含 aria-label='Like' 的按钮。

//button[./span[@aria-label='Like' and starts-with(@class,'glyphsSpriteComment_like')]]

代码:

likeBtn=driver.find_elements_by_xpath("//button[./span[@aria-label='Like' and starts-with(@class,'glyphsSpriteComment_like')]]")
for button in likeBtn:
    button.click() 

已编辑

诱导WebDriverWait

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

likeBtn=WebDriverWait(driver,20).until(EC.presence_of_all_elements_located((By.XPATH,"//button[./span[@aria-label='Like' and starts-with(@class,'glyphsSpriteComment_like')]]")))

【讨论】:

  • @RonPetrosian :我猜你正在访问 Instagram 链接。Induce WebDriverWait 并检查你是否仍然为空。
  • @RonPetrosian :检查编辑的代码,让我知道它是怎么回事。
  • 我试过了,但它仍然崩溃,是的,它在 Instagram 上。我会尝试以不同的方式做到这一点。它会更长更复杂,但至少它可以工作谢谢!!
【解决方案2】:

根据您的问题描述,您的代码应该可以正常工作。最可能的问题是您的 class 名称是动态的,并且会发生变化。您可以尝试使用查询类名的 XPATH:

likeBtn = driver.find_elements_by_xpath("//button[contains(@class, '_2ic5v')]")
print(likeBtn)

您可能需要将 _2ic5v 值更改为其他值,具体取决于您的页面 HTML。

【讨论】:

  • 我已经检查过了,它一直都是同一个 xpath。我会试试你的解决方案谢谢!
  • @RonPetrosian 感谢更新。我不确定是否可以根据信息提供任何进一步的帮助。问题中提供 - 如果您发布您尝试单击的按钮的 HTML(以及它周围的元素,如果可能的话),那么我们可以尝试一些不同的路径。您的按钮也可能被 DOM 中更高的 iframe 元素隐藏。
【解决方案3】:

按钮类名是动态的还是静态的?

如果你尝试选择 By.CssSelector 会怎样?

你可以通过在元素中复制选择器来查找元素

【讨论】:

    【解决方案4】:

    你可以试试xpath

    driver.find_element_by_xpath(".//button[@class='_2ic5v']")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2017-02-22
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多