一 前言

在页面操作中,可能会出现一些非预期的弹框,就拿最简单的登录场景来说,在登录成功后进入页面前,可能弹出某类提示信息的窗体,这类窗体的共性是:非必然出现。也就是说,当你登录系统的外部条件满足时,不会出现;否则出现,且阻止了页面的加载。针对该类问题,本文介绍一个小技巧来处理此类或有或无的窗体弹框。

二 为什么需要处理或有或无的弹框

在脚本开发中,我们重视脚本的稳定性,除了系统页面发生更改导致脚本必须修正外,其他的外界因素,如此类或有或无的弹框,就可能后续导致脚本的运行失败,所以,脚本应该尽力将潜在的问题处理掉,否则,随着自动化覆盖面的扩大,后期脚本维护会成为严重的技术债。另外,脚本不稳定的自动化基本是在走过场,既不能有效实现回归的目的,也可能摧毁团队对自动化的信心。在此,我们不讨论后期影响,只关注这种场景的处理方法。

三 处理方法

Selenium是考虑到此类场景的,所以提供了相当周到的处理方法。

核心代码如下:

fromselenium.webdriver.supportimportexpected_conditionsasEC#判断弹框是否出现,如果出现则点击取消,否则无须处理result=EC.alert_is_present()(browser)#如果存在返回alter对象,否则返回false,源码ifresult:print(result.text)result.dismiss()else:pass


上面代码,如果没有弹框,脚本正常执行;否则,执行弹框的dismiss()方法,取消弹框,当然也可能是调用弹框的accept()方法,确认弹框,根据实际情况定吧。


四 其他资源

关于python学习、分享、交流,笔者开通了微信公众号【小蟒社区】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学python。