博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium 2自动化测试实战16(多窗口切换)
阅读量:4595 次
发布时间:2019-06-09

本文共 1637 字,大约阅读时间需要 5 分钟。

一、多窗口切换

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了switch_to.window()方法。可以实现在不同的窗口之间切换。

以百度和百度注册页为例,在两个窗口之间切换

#coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport timedriver=webdriver.Chrome()driver.implicitly_wait(10)driver.get("http://www.baidu.com")#获得百度搜索窗口句柄search_windows=driver.current_window_handledriver.find_element_by_link_text(u"登录").click()driver.find_element_by_link_text(u"立即注册").click()#获得当前所有打开的窗口的句柄all_handles=driver.window_handles#进入注册窗口for handle in all_handles:    if handle != search_windows:        driver.switch_to_window(handle)        print 'now register window!'        driver.find_element_by_name("userName").send_keys('username')        time.sleep(2)#回到搜索窗口for handle in all_handles:    if handle==search_windows:        driver.switch_to_window(handle)        print 'now search window!'        driver.find_element_by_id('TANGRAM__PSP_4__closeBtn').click()        driver.find_element_by_id('kw').send_keys('selenium')        driver.find_element_by_id('kw').send_keys(Keys.ENTER)        time.sleep(2)driver.quit()

 

脚本执行的过程:打开百度首页,通过current_window_handle获得当前窗口的句柄,并赋值给变量search_handle。接着打开登录弹窗,在登录弹窗上单击“立即注册”,从而打开新的注册窗口。通过window_handles获得当前打开的所有窗口的句柄,并赋值给变量all_handles

第一个循环遍历all_handles,如果handles不等于search_handle,那么一定是注册窗口,因为脚本执行过程中只打开了两个窗口。所以,通过switch_to.window()切换到注册页进行注册操作。第二个循环类似,不过这一次判断如果handle等于search_handle,那么切换到百度搜索页面,然后进行搜索操作。
本例中涉及的新方法:
(1)current_window_handle:获得当前窗口句柄
(2)window_handles:返回所有窗口的句柄到当前会话
(3)switch_to.window():用于切换到相应的窗口,与switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。

转载于:https://www.cnblogs.com/Rita-LJ/p/11573676.html

你可能感兴趣的文章
css3动画属性系列之transform细讲scale缩放
查看>>
J. 【案例】THINKPHP框架使用Ajax
查看>>
14-----jQuery的ajax
查看>>
PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算
查看>>
哈希表设计
查看>>
第十一章:博客文章
查看>>
python之路---filter、map、lambda函数
查看>>
Android 系统状态栏一体化
查看>>
字符编码笔记:ASCII,Unicode和UTF-8【转载】
查看>>
django文件上传和序列化
查看>>
刘惠惠1.12
查看>>
宫廷秘方,给大家分享一下,祝大家身体健康
查看>>
iOS 远程推送
查看>>
p1460
查看>>
编辑器
查看>>
通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手
查看>>
回测指标计算
查看>>
Python函数篇:dict函数和列表生成式
查看>>
.Net托管世界的应用程序域和线程-网摘
查看>>
项目采购管理
查看>>