如何按类名定位btn?

2024-04-26 02:31:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下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时,打印保持不变


Tags: 代码htmlseleniumbuttonlabelclasslikespan
3条回答

尝试以下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')]]")))

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

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

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

按钮类名是动态的还是静态的?你知道吗

如果你试着选择由.CssSelector创建?你知道吗

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

相关问题 更多 >