51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 6775|回复: 6
打印 上一主题 下一主题

Selenium中waitforpagetoload的缺陷

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-4-1 10:04:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Selenium中,提交会引起页面加载的情况下,需要调用waitforpagetoload。

但是在我们的测试中,我发现就算waitforpagetoload成功返回后,也不意味着页面所有元素加载成功。如果此时针对某一个元素进行断言/操作,就会失败。

原来Selenium中的waitforpagetoload方法成功返回后,并未包括页面onload部分的javascript。这就造成测试脚本概率性失败,并且调试十分困难。

目前想到两种解决方法:
1. 直接在waitforpagetoload后增加2s等待时间。
2.在waitforpagetoload后,增加对所操作/判断的元素进行判断,如waitforcondition("selenium.iselementpresent('xxx')")

不知道大家有没有遇到这种问题,有没有什么好的解决方法?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-4-1 11:20:14 | 只看该作者
回复 1# allenzhao28
直接用方法2,如果你觉得waitforcondition默认时长还是长了,可以定制timeout。

如果是Ajax调用,现在倒有一个全新的方法基本可以摒弃所有传统的元素timeout同步方法。
现在同步已经不是难题了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-4-1 19:25:09 | 只看该作者
回复 2# shanxi

我已经开始采用waitforcondition方式,但是同样不可信。

典型例子,我需要对id为xxx的元素进行判断,我在click submit后调用了waitforpagetoload,然后又调用了waitforcondition("selenium.isElementPresent('xxx')", "3000"); 照理说只要不是timeout,我都能够找到xxx元素了。但是,还是会概率性出现xxx元素无法找到的错误。

我在waitforcondition里成功定位到xxx元素后又加了1秒等待,就不会再出现元素无法定位的错误了。

看来selenium在页面重新加载后对元素的判断很有问题。shanxi有什么高见?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-4-7 16:02:31 | 只看该作者
终于找到罪魁祸首了!
我测试的APP在每个页面表单提交后,都会通过一个relocation页面来重定向回之前页面。我的测试会随机出现找不到元素,或者得不到confirmation的原因就是selenium将relocation页面作为返回页面进行搜索,当然无法找到对应元素。
我查看了selenium的源代码,selenium server使用HttpURLConnection来与app服务器进行连接,其中setInstanceFollowRedirects被设置为false。这样selenium不会去获取redirect page。
现在的疑问是,为什么不是每次都获取到relocation page或者是redirect page,而是随机获取到两个页面中的一个。我怀疑是和app服务器的处理能力有关。

我重新封装了waitforpagetoload方法,通过判断返回的页面title来避免在relocation page上进行操作。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2011-4-7 18:36:18 | 只看该作者
这样啊, 那两次waitforpagetoload 怎样呢?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2011-4-8 08:30:35 | 只看该作者
回复 5# shanxi

在封装的waitforpagetoload里加判断已经可以规避这个问题了。因为不是每次都是获取relocation page,所以我觉得两次调waitforpagetoload不妥,其效率也不够好。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2011-4-18 13:41:23 | 只看该作者
你封装就好了 要充分利用高级语言的特性
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-2 19:55 , Processed in 0.070051 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表