在执行robotframework 的用例时,经常会出现稳定性差的问题。用例执行第一次成功,执行第二次就可能报错。自己对这个问题挠头很久,不知道怎么解决。今天在浏览网页的时候发现了一个不错的帖子,好像能够解决这个稳定性的问题。然后就把贴子搬了过来,为自己做一下备份(看了人家的帖子后,发现原来还是自己对robotframework的关键字用的不够熟悉造成的⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄)。
众所周知,在UI自动化在运行时,时常会收到来自各方的挑战;开发会说,你的自动化不稳定,又误报了;测试会说,这个框架不行,太多误报,我要花大量的时间去复查是否是BUG!
出现运行不稳定的情况包含:
一、 页面加载时快时慢,导致要操作的元素时隐时现!
二、 过多的异步加载,虽然控件加载完成了,但是值的填充正在进行!
三、 网格列表无法判断,是否加载完成,因为框架加载和数据加载要全部完成,才能操 作!否则会webdriver异常;
四、 Frame不退出为什么也报错!
解决问题:
第一个问题:在操作元素之前,需要先判断元素是否可见,Wait Until Element Is Visible
第二个问题:2个解决方案;
l Wait Until Keyword Succeeds 等待后面的关键字执行成功,可设置超时时间和重试间隔时间
l 如果你能确定,是否个元素值,加载最晚,就可以使用“第一个问题”的解决办法;
第三个问题:通常会对网格进行选中、双击、单击、验证等处理;如果网格数据未加载完成,webdriver会报错,以下2种解决办法;
l 在数据加载时,开发会实现loading效果,我们可以用Js调用开发的Loading判断,通过返回值,来确定网格列表加载完成没有;
l 以网格中某行为锚点,判断这个行是否可见了,如果可见,说明网格基本加载成功,可以使用“第一个问题”的解决办法;
第四个问题:点击一个按钮,出现一个弹出界面,通常实现是Div里面嵌套一个Iframe;有人会习惯,关闭这个弹出界面后,就直接操作父页面了;
研究发现,在某些浏览器的某些版本下,select Frame 后不退出,直接操作父页面,是OK的;但同时也发现,在一些版本下,即使Frame消亡,不退出frame,webdriver也会报错;所以还是老实的遵守规则吧!
原贴链接:https://zhuanlan.zhihu.com/p/21567663