playwright自动化最强实战

技术文章   2023-07-12 15:18   201   0  

最近在写百度二级自动绑定加推送工具,一开始全部用的抓数据包,想全部发送http请求提交数据来做,后面发现需要过滑块,滑块的话不怎么好直接提交数据发送http请求绕过,所以只能用浏览器来过滑块了。

因为以前有用过selenium,所以一开始想用的selenium,不过查了下资料,发现playwright这个自动化的后起之秀比selenium要强大得多,因此转用playwright做开发。

开发自动化操作经常会落入纯前端页面元素操作的思维里面,比如点击一个按钮,点完按钮后,它会发送一个ajax请求到后端,前端会根据后端返回的结果做一些操作,比如隐藏/显示页面元素,或者是跳转页面,纯页面元素操作思维的话,就是用playwright操作了按钮点击后,就一直循环判断某元素是否隐藏/显示,如果出现了就继续下一步,其实这种方法是很容易出各种问题的,最经常出现的一种情况就是比如网络出问题了,ajax没发送到后端,那playwright前端页面就会一直陷入死循环或者是要另外做补救的方法,这种的话如果页面复杂或者逻辑复杂的,将需要做出非常多的补救方案!所以最正确的方法是应该拦截相关请求,根据请求的结果,来操作前端页面元素的后续操作。

playwright之所以强大,是因为它爆露了很多的事件接口给我们,组合这些接口将可以解决上面所说的纯前端页面元素操作所诱发的问题!

playwright有用的事件接口列表如下:

1.Page对象里面的RequestFailed事件:这个事件里面可以捕获请求失败的情况,我们可以根据具体的失败页面/失败原因,来指定前端页面如果进行后续操作,比如刷新页面,比如切换代理,特别是那种需要使用代理的网页,代理一旦失效,如果没配合这个事件做开发的话,将是非常头痛的一件事。

2.Page对象里面的Response事件:这个事件就是可以完全解决前面所说的问题,正常用playwright操作了前端元素触发ajax请求后,我们前端的流程就要停了,就不要再循环判断下一步会出现的元素了,而是要在这个事件里面拦截到ajax返回的结果,然后根据这个结果指定前端页面元素的下一步操作。

......

当然playwright的接口还有很多,只要合理使用,将会使做出来的自动化程序非常的柔顺流畅。

最后展示一下做出来的成品,时速可达2000条/小时,然后开发的过程中还发现了可以突破同一域名只能绑定20条子域名限制的方法。:)


29890_cnvj_2769.png


下一篇
没有了
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。