使用Selenium点击指定class按钮失败,求正确的元素定位实现方法
错误原因
原CSS选择器语法不符合规范:CSS选择器中类名需要加.前缀,多个类名作用于同一个元素时需要连续拼接,中间加空格会被识别为「选择后代元素」,你原有的写法会匹配button元素后代中标签为is-gray的元素的后代中标签为pagination__more的元素,无法定位到目标按钮。
正确定位方案
方案1:修正CSS选择器定位
# 匹配button标签+全部类名,定位精准度更高 allm = driver.find_element(By.CSS_SELECTOR, 'button.button.is-gray.pagination__more') # 类名组合足够唯一的话也可以省略标签 # allm = driver.find_element(By.CSS_SELECTOR, '.button.is-gray.pagination__more') allm.click()
方案2:通过按钮文本定位
适合按钮文本Open在当前页面唯一的场景,搭配显式等待可以避免页面未加载完成导致的报错:
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait # 最长等待10秒,直到元素可点击再执行操作 allm = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[text()="Open"]'))) allm.click()
方案3:通过onclick属性定位
如果按钮的onclick属性固定不变,可以用该特征定位:
allm = driver.find_element(By.CSS_SELECTOR, 'button[onclick="getListRating(1); return false;"]') allm.click()
内容的提问来源于stack exchange,提问作者lxrdknows
相关产品推荐
相关产品推荐

