51Testing软件测试论坛

标题: selenium测试脚本稳定性 [打印本页]

作者: clarkar    时间: 2016-1-15 16:41
标题: selenium测试脚本稳定性
问一下,大家在自动化测试运行过程中有没有测试case不稳定的情况?都是怎么解决的?具体表现就是大概500条case,每次整体运行时随机出现错误,错误率1-2%

比如
clickID("id1");//点开按钮
waitID("id2");//等待弹出页面的元素变得可见
就这种都有概率失败,找不到id2。。。。。
其中clickID还用jQuery.active == 0判断了AJAX请求完成。

另外,问一下,我想判断一个元素是否显示(可见),是用visibilityOf()方法好,还是调用js判断好?

作者: zhang1987yuan    时间: 2016-1-15 16:41
        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;
                }
        }

你可以添加如下代码,做一个低柜调用来判断和查找元素。对元素查找可以设定时间和次数限制。
作者: fhhh_eyou    时间: 2016-1-20 16:56
调用js比较好
作者: clarkar    时间: 2016-1-29 15:15
webdriver发送的事件和js跟页面上原来的事件之间是怎么执行的?是在一个线程里?
作者: zzhengjian    时间: 2016-1-30 23:21
webdriver里判断元素的visibility 不仅仅是判断css 的display 属性, 同时元素还要满足大小不为0, 而这些都集成在了isdisplayed 这个api里面, 所以判断可见的话是用visibilityOf()方法更能满足webdriver的初衷。webdriver模拟的就是用户操作,所以你发送的命令告诉它要执行什么是单个命令单步执行的(当然js的异步你也可以了解下)。
另外,浏览器中的js是单线程的,只是可以异步执行。
作者: zhang1987yuan    时间: 2016-2-1 10:55
这种失败是正常的失败,运行case越多,可能非正常的失败情况也多,建议你怎加是失败处理机制。
作者: clarkar    时间: 2016-2-2 14:34
zhang1987yuan 发表于 2016-2-1 10:55
这种失败是正常的失败,运行case越多,可能非正常的失败情况也多,建议你怎加是失败处理机制。

已经添加了失败重跑机制,不过为什么呢,这个失败不应该被当成理所当然啊。。。
作者: clarkar    时间: 2016-2-2 14:40
zzhengjian 发表于 2016-1-30 23:21
webdriver里判断元素的visibility 不仅仅是判断css 的display 属性, 同时元素还要满足大小不为0, 而这些 ...

是的,我看webdriver文档上写的还有好几种情况,现在用的就是isdisplayed这个,我现在的问题就是:
比如我发了个点击请求,浏览器接到了,点击的事件就被加到了执行的队列里,点击结束后的就算执行完毕了,又触发了页面本身的点击事件;这时点击事件本身已经结束了,selenium 客户端这边又发下一个请求,这个请求的事件应该在最后。
如果这么考虑有问题吗?这样为啥还会有“点快了”这种情况。。。
作者: clarkar    时间: 2016-2-3 11:42
zhang1987yuan 发表于 2016-2-3 09:09
static boolean ElementExist(By Locator) {
                try {
                        diver.findElement(Locator);

问题并不是找不到元素,而是有时候太“能找到元素”了,总感觉会点快,我希望能够在页面完全稳定以后再进行下一步操作。。。
作者: zhang1987yuan    时间: 2016-2-4 07:27
clarkar 发表于 2016-2-3 11:42
问题并不是找不到元素,而是有时候太“能找到元素”了,总感觉会点快,我希望能够在页面完全稳定以后再进 ...

这个还不简单,你判断下你认为出现的元素出现了,然后再去操作不就行了。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2