如何通过类名找到btn?

时间:2019-10-14 18:35:11

标签: python selenium selenium-webdriver

我有这个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标签的按钮

我如何成功做到这一点?预先感谢

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

4 个答案:

答案 0 :(得分:1)

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

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

根据页面的HTML,您可能需要将_2ic5v的值更改为其他值。

答案 1 :(得分:1)

尝试遵循Xpath选项,这将找到包含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')]]")))

答案 2 :(得分:0)

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

如何尝试选择By.CssSelector?

您可以通过元素中的复制选择器找到元素

答案 3 :(得分:0)

您可以尝试遵循xpath

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