使用Selenium无法操作分页输入框:点击页码div后无法输入页码
Selenium 页码跳转问题解决办法
你代码里的核心错误是:click()方法执行后返回的是None,所以你把click()的结果赋值给变量后,再调用send_keys()必然会失败,这也是代码无效的根本原因。
正确的操作流程应该是这样:
- 先定位到页码切换的
<div>元素,点击它触发输入框的显示 - 等待动态生成的输入框加载完成(这一步必须加等待,否则Selenium会因为输入框还没渲染出来而找不到元素)
- 定位到输入框,输入目标页码,再按下回车键完成跳转
以下是修正后的代码示例:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化驱动(根据你的浏览器类型调整) driver = webdriver.Chrome() # 定位页码div并点击 page_div = driver.find_element(By.XPATH, '//*[@id="searchResults"]/div[1]/div/div[1]/div[2]/div[2]') page_div.click() # 等待输入框出现(替换成实际输入框的定位方式,比如通过class、id或xpath) input_box = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '//input[@placeholder="输入页码"]')) ) # 输入页码并回车 input_box.send_keys('8') input_box.send_keys(Keys.RETURN)
注意:你需要把代码中输入框的定位表达式替换成实际页面中输入框的真实定位,可以通过浏览器开发者工具查看输入框的HTML属性(比如class、id、placeholder等)来获取准确的定位条件。
另外,手动操作时页面有闪烁,说明点击后页面存在动态交互,必须用显式等待(WebDriverWait)确保元素加载完成后再操作,这能避免因为元素未就绪导致的操作失败。
内容的提问来源于stack exchange,提问作者VinceXB
相关产品推荐
相关产品推荐

