页面A跳转至页面B操作出现问题,selenium无法定位页面B上的元素
因为环境特殊,无法将代码拷出,所以只能描述,见谅下。有一个页面A,上面实现了一个登录的功能,通过submit方法提交后,触发了登录,然后A页面旁边弹出了一个B页面(类似IE的在新窗口中打开),加Url地址给B页面
通过lr录制的脚本发现,有一个重定向的url(redirectURL.jsp),还有一个关闭页面的url(close.html),然后再请求了一个main.xhtml
我自己尝试过把重定向的url直接去浏览器访问,应该出了跨域的问题,登录不成功,也考虑过打印页面的句柄,通过handle去跳转到新窗口,但是发现submit后,所有的操作,selenium多会报错,有没人可以帮忙给个思路 打开新页面时焦点还是停留在原来页面的。。如果想定位新页面上的元素需要switchto新页面 回复 2# joykao
这个多知道,问题是没办法找到那个新页面,我通过handle和句柄多找过了,就是单纯的window,open()打开的一个空白页 回复 3# zoo4778362
你是怎么找的呢?
//Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
} 回复 4# joykao
username.submit(); Set<String>handles=driver.getWindowhandles();
Iterator<String> it = handles.iterator();
然后通过it.next 去判断, 思路应该没问题,主要是是现在生成B页面的同时 把A页面关闭了。这样我们后面的所有操作不是多失去焦点了,方便的话加个QQ把,我详细和你说下 我没试过你这样的方法。。。思路没问题,但是我不知道it.next是否真的去切换了窗口,还是只是取到了下一个窗口句柄的值却没有做switch。。。。你在A 的基础上打开了B,无论A 存不存在了,你都需要做一个switch把焦点从A 上转到B上。。。重点是需要switchto而不是我要必须清楚每个窗口的句柄或者title或者name 回复 6# joykao
但是你如果在触发click的同时,这个页面关闭了。肯定不能switchTo的,其实应该说是不能操作已经关闭的页面上的任何元素 回复 7# zoo4778362
你自己试过了吗?被你搞糊涂了。。你到底是要操作新页面的上的元素还是原来已消失页面上的元素?。。。如果是新页面。。即使在你点击原来页面上的元素后原页面消失了,也是可以switchto新的页面的。。而且也必需switchto,但是如果你整个的driver都quit了。。那当然没办法switch了。。因为driver都不存在了。。。session已经结束了还搞毛 啊 回复 8# joykao
就是整个会话多被关闭了,A页面submit方法,window.open打开一个页面,然后把重定向的url传进去,打开一个新页面B,然后A页面关闭,这样不是我就完全无法操作B页面上的元素了,因为压根不能switchTo,所以现在不知道如何解决 回复 9# zoo4778362
试过了?因为我个人之前为一个项目调试过代码,情况和你这个很类似吧。。。开始打开一个initial的页面,然后输入一些信息提交会打开一个新页面,而且有明显的先关掉原先页面后打开现在页面,但是switchto是成功的。。。就是在submit后切换。。。
用的switchto方法就是上面我提供的。。。因为你用driver打开了一个新页面,即使原来页面关掉了还是有一个新页面的driver是活着的。。。肯定是可以switch的。。。除非你所有的driver全退出了。。。 回复 10# joykao
你有QQ吗。我QQ4778362.加下好友交流下。。。唉。表示不科学呀 回复 10# joykao
用你的方法已经解决了。我把浏览器的设置还原到默认就可以了...但是你那段代码的意思我不太理解,因为在submit后,我也尝试过取到hanle,但是只有一个,有点不懂你这个是如何切换过去的 回复 12# zoo4778362
在submit后取到一个handle是对的。因为只有一个窗口存在。。那段代码的意思简单理解是就是只要当前有driver触发的窗口就switch到那个窗口。。。 回复 13# joykao
有点明白了。只要是个新窗口,就会切换过去,应该是这样一个意思把 回复 14# zoo4778362
:victory:是的 回复 15# joykao
谢了哈,在调试脚本的时候碰到一个新的问题,我一个初始页面,父页面上有个按钮,点击这个按钮能弹出一个固定大小的窗口页面,子窗口里面有一堆选择的东西,我按F12跳不到开发者工具,页面右键也不行,那这个页面的元素如何去定位,页面已经切过去了,找到了handle有两个 你可以直接访问那些小窗口的URL试试。。自己手动的打开那些窗口然后看看可以检查元素属性吗?没理由不能检查元素的 回复 12# zoo4778362
你好,我这里跟你存在的问题一样,可否发下你的代码,谢谢! 回复 18# gaspar1986
上面的大神已经被代码发出来了。。。。你试试看,不行把你那边的情况描述下。我看下是不是一样 回复 17# joykao
嗯的。我昨天用Lr去把弹窗的url捕获,然后直接新页面打开了。。但是每次多这样感觉不科学
页:
[1]
2