selenium怎么验证列表信息添加成功事件,添加成功后会在列表显示,怎么定位验证已添加的信息

selenium怎么验证列表信息添加成功事件,添加成功后会在列表显示,怎么定位验证已添加的信息,第1张

看你说的列表是指什么元素了,是表格还是什么元素?你可以看你要验证的信息是在什么属性里面还是属于它的text。

添加成功后,首先定位这个元素,然后获取它的属性值(getAttribute()方法)或是text值(getText()方法),这个具体要视你元素的情况而定!然后和你期望的值进行对比

之前在学校曾经用过request+xpath的方法做过一些爬虫脚本来玩,从ios正式转前端之后,出于兴趣,我对爬虫和反爬虫又做了一些了解,然后发现了selenium这个神器。selenium原本是一款测试工具,但由于他可以较好的模拟浏览器的各种 *** 作,完全无视对于user-agent的限制,所以现在被更多的用于爬虫脚本中。这里记录一下借助selenium库进行爬虫时碰到的一些问题以及解决方法。(拒绝恶意爬虫从我做起)

selenium的安装不多说, pip install selenium就行。不过要注意自己的python版本,要是3.x才行。用它打开浏览器,然后通过dom *** 作获取需要的dom节点。

如果需要登录的,也可以事先将账号密码写好,然后用send_keys方法进行自动输入。

然后需要什么就直接通过dom方法来获取。不过现在很多网站的url有防爬处理,使用了不规律的url,无法像豆瓣排行榜那样直接遍历。但这个不难,用selenium就是要模拟人的 *** 作的,真人 *** 作的时候也不会直接输url来一页一页看,比如在线阅读的网站,一般都会有个目录页。先爬取目录页面的信息,先将正文url列表保存下来,然后再遍历列表就行。

这里有个sleep,目的是是确保目录页能完全加载完。当然这个方法有点蠢,后面我使用了不同的方法来做页面加载完成的判断。

页面加载完成需要时间,一定要等页面加载好了才能获取页面元素。而直接设置一个固定的sleep显然是效率极低且容易出错的。这里有几种不同的方法来自动判断页面加载的情况。

监视我最终需要的元素有没有加载完成,加载完成了就开始后续 *** 作。比如我要的dom节点有一个类名为'page-content',并且在整个页面中一共有两处,而我需要的是第二处。那就可以监视这个节点的加载情况。

这里设置了0.5秒的刷新周期,当然可以设置的更短,然后设置了10秒的timeout,超时自动打开下一章。

这就很简单了,就一句话,最多等10秒,进行下一步。要是提前加载完就提前进行。这个方便是方便,但是不好用,他会等页面完全加载完才进行下一步,而事实上我只需要等正文加载完就行,所以效率上要差一点。

显性等待的好处就是可以在我需要的元素加载完的时候就进入下一步,获取元素内容,但是也有不好的地方,那就是还不够灵活。显性等待在超时的时候会抛出TimeoutException异常,在暴露的接口中没有给我定义异常处理的地方,这也是我选择自己实现一遍等待机制的原因,这样我可以对超时的异常进行处理。

很多时候,我们会发现,在登录账号时,系统会要我们输入验证码。如果想要让脚本自动识别验证码,可能就涉及到图像识别技术,还有一些第三方的服务可以使用,也是可行的。

但有的时候,网站会使用更为复杂的人机验证。比如这样的:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11579842.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存