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