求救,关于selenium rc自动化测试网页的问题
使用的浏览器是 firefox那个有2个页面 A 和 B
我通过点击 A 页面上的一个按钮 跳转到了 页面B
然后 通过 xpath 去定位 控件结果 在B页面上定位到的位置 抓取的控件的Text 都是 页面A 上面的这个是为什么阿 ? 首先你确定Xpath定位的控件是唯一存在的么?
其次我猜测是Selenium的Session ID导致你的操作都停留在页面A
你可以尝试下使用 selenium.selectWindow("TITLE从POPUP WINDOW中获得")
望高手指教
[ 本帖最后由 Eric_Lee 于 2010-2-25 15:42 编辑 ] 原帖由 Eric_Lee 于 2010-2-25 15:25 发表 http://bbs.51testing.com/images/common/back.gif
首先你确定Xpath定位的控件是唯一存在的么?
其次我猜测是Selenium的Session ID导致你的操作都停留在页面A
你可以尝试下使用 selenium.selectWindow("TITLE从POPUP WINDOW中获得")
望高手指教
应该是唯一,因为 之前的脚本 我是分别在不同的页面测试过的 我的意思是 我是在 页面 A 和B 分别用 IDE 测试过的脚本,然后 转成 Junit的代码后,整合在一起跑,就出现这样的情况了。 单独跑,没有这样的问题
呃,小的不才, selenium.selectWindow 里面的参数是什么呢 ? 我这个不是很清楚, 难道是填写页面B ?
谢谢~ 而且,页面跳转的时候 我用 waitforpageload(3000)一直是失效的这个和网页是 ajax 有关么 ? 这个是页面跳转操作,页面B是因为在A页面点击某个链接或按钮时弹出的新页面,这时可以用selectWindow跳到新弹出的页面上操作,如果两个页面不存在这样的关系,或者说两个页面不是在一个selenium session里的话,是不能互操作的。
参数我没用过title的,但api上的说明有这样的用法,应该可以,我想那个title只是的时html里<title>标签里 的页面文档title吧。
还用很多参数和用法,你最好查看selenium网站上api的手册,上面都有比较不错的说明。
还有waitforpageload(3000)操作,如果发生弹出新页面了,因为你没切换窗口,这个操作还是在主页面上进行操作的,所以结果一定是超时的,主页面实际上并没用刷新。如果你切换窗口到新页面,这个操作的结果也是不保证的,因为有时你切的新页面,然后等待加载页面时,也许你切换的同时就加载完毕了,所以你依然得到一个等待超时,所以这样的行为是不保证的。 “这个是页面跳转操作,页面B是因为在A页面点击某个链接或按钮时弹出的新页面,这时可以用selectWindow跳到新弹出的页面上操作,如果两个页面不存在这样的关系,或者说两个页面不是在一个selenium session里的话,是不能互操作的。“
那个,谢谢你的回答,我想补充的,我所描述的页面A和页面B,之间的联系就是 A 上面有个 查看结果的按钮,然后我点击了,然后页面A 就变成 页面B 了
这样的情况 是您说的哪一种 ?
我比较笨,老是问这中低级问题,不好意思哈 。 应该Q1的OKR 还没有完成,要来不及了,我有点急了 你的意思是在浏览器A页面中点击一个查看链接或按钮,没有打开一个新的浏览器来显示B页面,还是在原来的浏览器中,把A页面全部换成了B页面内容,但是页面没有刷新,是么??
这个是Ajax的吧,如果是这样是不需要selectWindow切换窗口的。可以直接在原页面上操作,只要等待信的ajax请求结果加载完毕吧,不晓得你说的情况,能具体点嘛 原帖由 park_p 于 2010-2-26 09:49 发表 http://bbs.51testing.com/images/common/back.gif
你的意思是在浏览器A页面中点击一个查看链接或按钮,没有打开一个新的浏览器来显示B页面,还是在原来的浏览器中,把A页面全部换成了B页面内容,但是页面没有刷新,是么??
这个是Ajax的吧,如果是这样是不需要sele ...
对的 ,就是这样 ~
这样举例子吧, 我们看到的论坛, 我点击了一个按钮,就变成了另外一个页面 但是 上面的 51testing 软件测试论坛 之类的 图片阿 什么都没有变化,但是下面的东西发生了变化。
然后,之前 页面上 有一个内容: 可用库存:新查询
变成页面B之后这个内容变成了: 可用库存:详细信息
那么,我在检查页面B元素的时候,显然需要测试 ”详细信息“这4个字是否存在,结果,给我的结果是检查出来,那个位置是的内容是”新查询“ , 显然,这个是页面A的东西,而现在我已经处于页面B了 ~
这样描述 可以么 ? 我不敢截图,因为涉及公司的东西,回头老大要找我麻烦了 。。。这个真是对不起阿 原帖由 zgdragon1 于 2010-2-26 09:55 发表 http://bbs.51testing.com/images/common/back.gif
selenium 存在的缺陷很多,建议用360WebTester,能够很好地解决你遇到的问题。
已经决定用selenium了 。。 这个没有的选择了 ~ 你的页面里是不是套了iframe或是iframe还嵌套了几层啊?你说的情况iframe也能实现,不一定是ajax,你能看看你的页面html源码嘛 原帖由 eio402 于 2010-2-26 09:57 发表 http://bbs.51testing.com/images/common/back.gif
已经决定用selenium了 。。 这个没有的选择了 ~
那个是做广告的~
如果360全部功能都免费使用并无偿提供帮助和技术支持一年以上,到是可以试试用看,哈哈哈哈~~ 原帖由 park_p 于 2010-2-26 09:59 发表 http://bbs.51testing.com/images/common/back.gif
你的页面里是不是套了iframe或是iframe还嵌套了几层啊?你说的情况iframe也能实现,不一定是ajax,你能看看你的页面html源码嘛
检查了一下,没有iframe。。都是一层层的 div 。。。 源码不能帖阿 都是g开头的,傻子都知道是谁的了 呵呵 你这个没有html码,就不知具体是怎么达到这样的效果的了,难道页面内容都是js临时写的?
这个没有环境,真不好查看问题在哪儿了。就算你用了一些js库也是可以操作的啊,ext?
是不是frame套在div里啊,套的比较深?
这个没环境还真不好说了~~~~~~~
爱莫能助啊! 我经理加了一个 sleep(3000) 居然就认出来了 怎么会这样 想不通!!!! 原帖由 eio402 于 2010-2-26 11:08 发表 http://bbs.51testing.com/images/common/back.gif
我经理加了一个 sleep(3000) 居然就认出来了 怎么会这样 想不通!!!!
那估计是Ajax加载需要一定时间,你的操作应该在等待某个预期的东东发生才能进行,而你使用的waitforpageload(XXXX)是达不到这个效果的
不过建议还是尽量少使用Sleep,会极大的降低测试效率
最后在鄙视那个XXX工具,你们这样赤裸裸的推广只会令人反胃,建议你们直接买个广告机每天轰炸下论坛就OK了,何必手工推了? 原帖由 Eric_Lee 于 2010-2-26 12:39 发表 http://bbs.51testing.com/images/common/back.gif
那估计是Ajax加载需要一定时间,你的操作应该在等待某个预期的东东发生才能进行,而你使用的waitforpageload(XXXX)是达不到这个效果的
不过建议还是尽量少使用Sleep,会极大的降低测试效率
最后在鄙视那个 ...
同意,这样做法可行只能说在硬等待ajax的响应结果了,这个问题以前就有人提过并回答过的,你可以用循环动态等待一个ajax处理请求后才产生的id或某元素,这样比直接sleep要好。
还有就是有了解ruby和watir的朋友们,有使用经验的朋友们对比下360,看看到底增加了什么特殊的、好的、扩展的功能。如果只是简单整合,那有免费的watir不用干嘛用收费的360。 多谢各位这个该死的网页 是doubleclick的人搞的 真是麻烦阿 ~ 原帖由 eio402 于 2010-2-25 11:19 发表 http://bbs.51testing.com/images/common/back.gif
使用的浏览器是 firefox
那个有2个页面 A 和 B
我通过点击 A 页面上的一个按钮 跳转到了 页面B
然后 通过 xpath 去定位 控件结果 在B页面上定位到的位置 抓取的控件的Text 都是 页面A 上面的这个是为什么阿 ...
说明你没有跳到第二个页面。selectWindow方法 在使用selenium的时候,有些链接不仅仅是页面跳转,有可能运行js,或者弹出对话框,对于类似的操作,都需要sleep, 比如一个按钮,触发一个js“javascript:addBankOpt()” 作用是在页面上新增一个 输入框,那么在触发这个js后,需要等待1-2秒中,否则无法识别新增输入框的 locate.
如果是alert一个对话框,不等待1-2秒,selenium无法捕捉到这个对话框,从而自动化会中断
这个确实影响代码运行效率,能不用则不用,但有时,我个人没有找到更好的办法。只能用sleep
[ 本帖最后由 fflastjay 于 2010-3-24 14:26 编辑 ]
页:
[1]