如何抓取含按钮/菜单项的网页?设置每页50行代码报错求助
代码问题排查与修正方案
核心问题1:XPATH语法错误
你的XPATH表达式//[@class='btn btn-default dropdown-toggle']存在语法错误:
- XPATH的节点选择器部分缺失,必须指定节点类型(比如
*匹配任意节点,或者具体的button标签),正确写法应为//*[@class='btn btn-default dropdown-toggle']或//button[@class='btn btn-default dropdown-toggle']。
核心问题2:错误使用Select类
Select类是Selenium专门用于操作原生HTML <select>标签下拉框的工具,但你定位的元素是Bootstrap风格的按钮式下拉菜单(带dropdown-toggle类),这类下拉菜单本质是按钮+隐藏的<ul>/<li>列表,并非原生<select>元素,因此调用Select类的方法完全无效。
修正思路
针对Bootstrap下拉菜单,正确操作步骤应为:
- 等待并点击下拉按钮,展开菜单列表;
- 等待目标选项(显示文本为'50'的元素)可点击,然后点击它。
示例代码:
# 点击下拉按钮展开菜单 dropdown_btn = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-default dropdown-toggle']"))) dropdown_btn.click() # 点击显示为'50'的选项 option_50 = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[contains(@class, 'dropdown-menu')]//*[text()='50']"))) option_50.click()
注意:可根据实际页面结构调整XPATH(比如调整<ul>的定位条件,或者选项的文本匹配方式)。
内容的提问来源于stack exchange,提问作者Agustos Imola
相关产品推荐
相关产品推荐

