Selenium2测试单点登陆的系统
使用selenium2进行自动化测试,登陆进去后,无法定位页面元素。被测系统是单点登陆系统,被测功能不是单点所在服务器功能。
使用driver.pageSource();可以打印出页面信息。
但是,使用:driver.findElement()找不到元素。
有没有大神遇到过类似的情况?如何解决? 再试试其他定位元素方式 应该是跳转新的页面,然后selenium找不到元素了,可以根据句柄来切换页面,然后再操作
下面是代码
0.获取当前页面的句柄值
m0= driver.window_current_handle
1.点击链接后,打开新页面(假设是打开新的标签页)
2.等待新页面加载完成(新handle生成后)
while True:
m = driver.window_handles
if len(m)>1:
break
判断句柄数量,如果大于1,表示新页面加载完成
3.获取所有的页面句柄
m = driver.window_handles
4.获取新页面句柄
for x in m:
if x != m0:
handle_new = x
5.跳转新页面
driver.switch_to_window(handle_new) xieyouying 发表于 2015-10-9 15:05
应该是跳转新的页面,然后selenium找不到元素了,可以根据句柄来切换页面,然后再操作
下面是代码
0.获取 ...
是这样的。我们的系统左侧是菜单,右侧才是内容。
单点登陆后,点击A系统菜单,右侧链接到B系统页面。所以句柄一直是一个。
有个一个现象,B系统用JQuery写的,打开的时候,先有屏蔽,显示全了才关掉屏蔽,但是时间很短。
这个会不会有关系呢?但是我设置等待时间,还是不行。 涵灵 发表于 2015-10-10 09:15
是这样的。我们的系统左侧是菜单,右侧才是内容。
单点登陆后,点击A系统菜单,右侧链接到B系统页面。所 ...
这样的话,一般这种实现方法都是通过iframe来实现的
可以先把右侧的iframe获取到
例:
e = driver.find_element_by_xpath('/html/body/div/div/div/div/div/iframe')
然后再
driver.switch_to_frame(e)
然后再操作右侧页面中的内容
页:
[1]