selenium测试脚本稳定性
问一下,大家在自动化测试运行过程中有没有测试case不稳定的情况?都是怎么解决的?具体表现就是大概500条case,每次整体运行时随机出现错误,错误率1-2%比如
clickID("id1");//点开按钮
waitID("id2");//等待弹出页面的元素变得可见
就这种都有概率失败,找不到id2。。。。。:@
其中clickID还用jQuery.active == 0判断了AJAX请求完成。
另外,问一下,我想判断一个元素是否显示(可见),是用visibilityOf()方法好,还是调用js判断好?
static boolean ElementExist(By Locator) {
try {
diver.findElement(Locator);
logger.debug("元素查找成功:"+Locator);
return true;
}
catch (org.openqa.selenium.NoSuchElementException ex) {
logger.debug("元素查找失败:"+Locator+"错误信息为:");
ex.printStackTrace();
return false;
}
}
你可以添加如下代码,做一个低柜调用来判断和查找元素。对元素查找可以设定时间和次数限制。 调用js比较好 webdriver发送的事件和js跟页面上原来的事件之间是怎么执行的?是在一个线程里? webdriver里判断元素的visibility 不仅仅是判断css 的display 属性, 同时元素还要满足大小不为0, 而这些都集成在了isdisplayed 这个api里面, 所以判断可见的话是用visibilityOf()方法更能满足webdriver的初衷。webdriver模拟的就是用户操作,所以你发送的命令告诉它要执行什么是单个命令单步执行的(当然js的异步你也可以了解下)。
另外,浏览器中的js是单线程的,只是可以异步执行。 这种失败是正常的失败,运行case越多,可能非正常的失败情况也多,建议你怎加是失败处理机制。 zhang1987yuan 发表于 2016-2-1 10:55
这种失败是正常的失败,运行case越多,可能非正常的失败情况也多,建议你怎加是失败处理机制。
已经添加了失败重跑机制,不过为什么呢,这个失败不应该被当成理所当然啊。。。 zzhengjian 发表于 2016-1-30 23:21
webdriver里判断元素的visibility 不仅仅是判断css 的display 属性, 同时元素还要满足大小不为0, 而这些 ...
是的,我看webdriver文档上写的还有好几种情况,现在用的就是isdisplayed这个,我现在的问题就是:
比如我发了个点击请求,浏览器接到了,点击的事件就被加到了执行的队列里,点击结束后的就算执行完毕了,又触发了页面本身的点击事件;这时点击事件本身已经结束了,selenium 客户端这边又发下一个请求,这个请求的事件应该在最后。
如果这么考虑有问题吗?这样为啥还会有“点快了”这种情况。。。 zhang1987yuan 发表于 2016-2-3 09:09
static boolean ElementExist(By Locator) {
try {
diver.findElement(Locator);
问题并不是找不到元素,而是有时候太“能找到元素”了,总感觉会点快,我希望能够在页面完全稳定以后再进行下一步操作。。。 clarkar 发表于 2016-2-3 11:42
问题并不是找不到元素,而是有时候太“能找到元素”了,总感觉会点快,我希望能够在页面完全稳定以后再进 ...
这个还不简单,你判断下你认为出现的元素出现了,然后再去操作不就行了。
页:
[1]