selenium中click()无效原因之一

selenium中click()(例如,欲实现翻页功能)无效原因之一

虽然看着代码先执行的click()翻页,但是下面一行代码执行得很快,在实际翻页前就获得当前页数据(假设页面之间数据结构相同),进而造成翻页的click()没有到达预期效果。
解决办法有两种:一是采用强制等待,time.sleep(3)等待3秒,但是有些时候可能不需要3秒那么多,有时3秒又可能不够,怎么优化呢?
第二种办法就要用到 WebDriverWait方法了,至于怎么引用相关库此处略,重点介绍一下它的使用结构
WebDriverWait(browser, 10)通常和until一起使用,使用中又会用到EC,EC的引用是from selenium.webdriver.support import expected_conditions as EC。顾名思义就是期望的条件,当然就有很多可选条件了,例如.text_to_be_present_in_element意思是元素的text中有某个字符串(这种类型的条件作为等待加载网页完成继续下一步程序的条件)。由此你必须告诉函数两个参数:你指定的元素是什么,那个字符串又是什么。其中第一个参数以元组方式提供,形式为(定位的方法,定位的具体表达式)。
综上,一个完整的想达到显示等待的表达式为

WebDriverWait(browser, 10).until(EC.text_to_be_present_in_element((By.XPATH,'... / table / tbody / tr[1] / td[1]'),str))

注:browser是webdriver的一个实例名字了,10表示最多等10秒否则报错,By.XPATH只是可选许多定位方法的一种,可以网搜其他定位方法;,’… / table / tbody / tr[1] / td[1]'是确定了定位方法后的具体定位路径,str是期望加载出的那个字符串。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值