Selenium selenium 谁遇到过点击了按钮但实际却没有点上的情况?

狂天 · 2020年12月01日 · 最后由 fiskeryang 回复于 2020年12月03日 · 3758 次阅读

跑 UI 自动脚本时,有一个按钮,每次跑脚本都有一定几率点击了却没有生效。
我给这个按钮设置了显式等待,可是每次都能执行过去,就是点击了这个按钮该出现的弹窗没来,总是在进行下一步操作弹窗时报错。

我怀疑是因为这个按钮是刚切完页面就要点击的,可能有没加载完的情况,
但是我设置了显式等待了啊,也能通过,我干脆在切换完页面后,也就是点击这个按钮前直接给它 time.sleep(2),就正常了,并且很稳定

这是因为啥呢?点击按钮本身没报错说明 selenium 本身已经认为它点击了吧,但是却没有生效。

给大家看一下这个点击后的按钮,虽然有了点击效果,却没有生效:

无效点击前

无效点击后

最佳回复

很正常,按钮点击要有动作必须要其对应的 JS 方法加载完毕。而显式等待一般也只是判断按钮元素本身是否加载完成或者显示。
这之间还是会有一定的时间差。 所以建议所有的动作之间都加上 0.5 到 1 秒的延时。可以避免很多类似的问题

共收到 7 条回复 时间 点赞

很正常,按钮点击要有动作必须要其对应的 JS 方法加载完毕。而显式等待一般也只是判断按钮元素本身是否加载完成或者显示。
这之间还是会有一定的时间差。 所以建议所有的动作之间都加上 0.5 到 1 秒的延时。可以避免很多类似的问题

fiskeryang 回复

想请教您一个问题,ui 自动化测试,有没有必要检查界面显示呢,因为界面上有表单,表单旁边会有标签,需要去检查标签的文字显示是否正确吗

取决于测试用例的设计是否有这样的要求。

Thirty-Thirty 回复

请问什么情况下用例的设计需要增加对标签文本的检查呢?

fiskeryang 回复

就是说按钮虽然加载完了,但是按钮的点击动作的 js 方法还没加载完毕,是这个意思吗?

歪楼了,呵呵!
测试用例设计是个系统工程,不能单一看待。测试用例的目的是验证软件行为是否和设计预期相符,即实际结果 (actual result) 是否和期望结果 (expected result) 相符。
表单及旁边标签文字如果是该用例的运行实际结果或结果中的组成部分,就必须对照期望结果进行验证,反之不需要。
用例评审时,一项重要内容就是纠正解决用例验证点不足、验证点错误及验证点多余等问题。

这个得看你们公司的需求,一般来说 UI 只是用来做页面的冒烟测试,保证不出低级问题就行。没必要做到这么细致
不过,我这里确实是做了的,包括标签文本校验、表单元素默认值、列表关联项动态加载、元素状态控制、表单元素布局、数据列表校验
因为产品本身是属于需要长期维护更新的企业应用。自动化也跟着做了好几年了

狂天 关闭了讨论 12月03日 09:36
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册