验证码拖不动滑块,验证码滑不动怎么办呀,为什么验证码滑块滑不动
生于理想,死于欲望
分析过程,虽然没啥用的相信很多朋友都遇到过这个问题,以下是一个分析总结,虽然没多大用,哈哈
最终的解决方法在结尾
以下是我的代码
class ALITBSpider(object):def _ _ init _ _(self,service_ip,用户名,密码):self.path=H:\python-练习\爬虫\ chrome driver _ win32 \ chrome driver。自我处决。选项=网络驱动程序.chrome选项()self。headers={ user-agent : Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/85。0 .4183 .121 Safari/537.36 ,} self.driver=webdriver .chrome(executive _ path=self。路径,选项=自身。选项)自我。司机。得到( https://www。淘宝。com’)自我。num=0 def登录(self,username=None,password=None): 密码登录 自我。司机。implicitly _ wait(3)如果self。司机。查找元素链接文本(亲,请登录):自我。司机。查找元素链接文本(亲,请登录).单击()自我。司机。find _ elements _ by _ id( FM-log in-id )[0].发送键(用户名)自我。司机。find _ elements _ by _ id( FM-log in-password )[0].send _ keys(password)auth _ code=web驱动等待(self。驱动程序,10,1.5).直到(lambda代码:self。司机。find _ element _ by _ class _ name( NC _ icon font )#滑动验证)if auth _ code:self。司机。implicitly _ wait(3)actions=动作链(self。驱动程序)操作。点击并保持(授权代码)#按住鼠标左键行动。暂停(1)动作。移动偏移量(258,258) #鼠标拖动动作。暂停(1)动作。释放()#释放鼠标actions.perform() #执行操作自我。司机。隐式_等待(3)#显示等待自我。司机。find _ element _ by _ class _ name(密码登录).单击()#登陆
硒。常见。例外情况。javascript异常:消息:JavaScript错误:无法对"文件"执行" elementsFromPoint ":提供的双精度值是非有限的。
运行报错,人工重试也报错
我们先找到这个的源码
定义执行(自身): 执行所有存储的操作如果自我.司机。W3C:自我。W3C _ actions。perform()else:for action in self ._actions: action()接着找到他执行的语句
def perform(self):enc={ actions :[]}用于self中的设备。设备:编码=设备。encode()if encoded[ actions ]:enc[ actions ].追加(编码)打印(enc) self.driver.execute(命令W3C_ACTIONS,enc)发现,命令存在的,一个指针, 2个移动指针,2个等待的,但还是报错
错误来源
发现
反应如下
{ 值:无} { 值:{ 元素-6066-11e 4-a52e-4f 735466 cecf : 1a 669 d6f-f2cf-41ac-862 a-d 281230 E1 a1b } } { 值:{ 元素-6066-11e 4-a52e-4f 735466 cecf : 1a 669 d6f-f2cf-41ac-862 a-d 28122无法对文档\ 执行\ elementsFromPoint \ :提供的双精度值是非有限的. n \ \ n(会话信息:chrome=85.0.4183.121), stack trace : Backtrace:\ \ n \ \ tordinal 0[0x 00ead 383 3134339]\ \ n \ \ tordinal 0[0x 00d 9 a 171 2007 409]\ \ n \ \ tordinal 0[0x 03 AE 8 569064]\ \ n \ \ tordinal 0[0x 03d 08 e 577678]\ \ n执行命令失败
最终解决方法最后从前端入手
大多数都是检测导航员,因此
在开头加入
自我。选项。add _ argument(禁用-闪烁-功能=自动控制)和在请求前加入这个
自我。司机。execute _ CDP _ cmd(页。addscripttoevaluateonnewdocument ,{ source : 对象。定义属性(navigator, webdriver ,{ get:()=undefined }) })self。司机。隐式_等待(3)#显示等待完整代码:
class ALITBSpider(object):def _ _ init _ _(self,service_ip,用户名,密码):self.path=H:\python-练习\爬虫\ chrome driver _ win32 \ chrome driver。自我处决。选项=网络驱动程序.chrome选项()self。选项。add _ argument( disable-blink-features=automation controlled )self。headers={ user-agent : Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/85。0 .4183 .121 Safari/537.36 ,} self.driver=webdriver .chrome(executive _ path=self。路径,选项=自身。选项)自我。司机。得到( https://www。淘宝。com’)自我。num=0 self。create _ table()def登录(self、用户名=无,密码=无):“”密码登录 自我。司机。implicitly _ wait(3)如果self。司机。查找元素链接文本(亲,请登录):自我。司机。查找元素链接文本(亲,请登录).单击()自我。司机。find _ elements _ by _ id( FM-log in-id )[0].发送键(用户名)自我。司机。find _ elements _ by _ id( FM-log in-password )[0].send _ keys(password)auth _ code=web驱动等待(self。驱动程序,10,1.5).直到(lambda代码:self。司机。find _ element _ by _ class _ name( NC _ icon font )#滑动验证)# if auth _ code:# self。司机。implicitly _ wait(3)# actions=动作链(self。驱动程序)#操作。点击并保持(授权代码)#按住鼠标左键#操作。暂停(1)#动作。移动偏移量(258,258) #鼠标拖动#操作。暂停(1)#动作。释放()释放鼠标# actions.perform() #执行操作# actions.reset_actions() #清空自我。司机。execute _ CDP _ cmd(页。addscripttoevaluateonnewdocument ,{ source : 对象。定义属性(navigator, webdriver ,{ get:()=undefined }) })self。司机。隐式_等待(3)#显示等待自我。司机。find _ element _ by _ class _ name(密码登录).单击()#登陆登陆成功,网页中的滑动验证,及一次常用的也是用相同的办法
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。