python - 如何在silenium中获取下一页?
问题描述
我正在使用 python 中的 selenium,我想抓取所有页面,但我遇到了麻烦:这是我要单击的元素:
我正在使用以下代码:
link=driver.find_element_by_link_text ('2')
link.click()
但它会点击另一个元素
Deos是否存在另一种获取下一页的方法?
解决方案
首先,你的元素看起来像你试图点击的元素与另一个元素重叠,所以你需要等待它变得可点击或其他元素消失:
el = WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.XPATH,//div[@id="pagination_wrapper"]//li[@value="1"])))
或者
WebDriverWait(driver, LONG_TIMEOUT
).until_not(EC.presence_of_element_located((By.XPATH,"//div[@class='close_cookie_alert']")))
就像您可以找到所有元素一样:
link1 = driver.find_element_by_xpath('//div[@id="pagination_wrapper"]//li[@value="1"]')
link2 = driver.find_element_by_xpath('//div[@id="pagination_wrapper"]//li[@class="2"]')
link3 = driver.find_element_by_xpath('//div[@id="pagination_wrapper"]//li[contains(text(),"text of the third element")]')
如果通常的点击不起作用,请尝试通过 javascript 使用点击,如下所示:
driver.execute_script("arguments[0].click();", link1)
或者,只需移动到下一页:
driver.get('new_page')
推荐阅读
- angularjs - 动态添加联系号码的角度反应
- marklogic - 在marklogic中将数据插入森林
- jquery - 使用jquery验证视图中的空值
- git - 当 Jenkins 从 git origin 获取时,它给出错误“无法锁定 ref”
- javascript - 如何向原型添加属性(javascript)
- c# - Gridview 仅显示 MySQL 数据库中的 1 行 - ASP.net C#
- node.js - 类型错误:getUserInfo 不是函数
- html - 如何在 HTML/CSS 中为视频添加边框半径
- google-sheets - 在 Google 表格中以易于管理的方式汇总学生信息/呈现
- java - 无法在 MDB 中同时处理消息