Selenium无法定位Web of Science检索页下一页按钮该如何解决
错误原因
find_element_by_class_name仅支持传入单个类名,你传入了空格分隔的3个类名,方法会将整段字符串识别为单个类名进行匹配,自然无法找到对应元素- 若排除类名传参错误的问题,还可能是页面未完成动态渲染就执行了定位代码,或是按钮处于禁用状态、被其他元素遮挡
- 你使用的旧版
find_element_by_*语法在Selenium 4.0+版本中已经废弃,也可能引发兼容问题
正确解决方案
- 首先导入Selenium官方推荐的元素定位依赖
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
- 优先用属性+显式等待的方式定位,精准度最高,避免和页面上同类名的其他按钮(如上一页)冲突
# 最多等待10秒,匹配带「下一页」aria标签的按钮 # 如果是中文界面,把属性值换成"下一页"即可 next_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable( (By.XPATH, '//button[@aria-label="Next Page"]') ) ) next_btn.click()
如果偏好CSS选择器写法,也可以用如下代码:
next_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable( (By.CSS_SELECTOR, '.mat-focus-indicator.mat-icon-button.mat-button-base[aria-label="Next Page"]') ) ) next_btn.click()
- 额外注意:遍历到最后一页时,下一页按钮会被添加
disabled属性无法点击,遍历前可以先判断按钮是否存在禁用属性,避免报错。
内容的提问来源于stack exchange,提问作者ObiwanKeTobi
相关产品推荐
相关产品推荐

