我有这个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时,打印结果保持不变
答案 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']")