软件测试-python-selenium-多窗口切换
2020-02-12 20:19
162 查看
先粘贴代码,以百度为例
[code]def baidutest(url): br = startBrowser.firefox() br.maximize_window() br.get(url) br.implicitly_wait(10) bd_home = br.current_window_handle print(br.window_handles) bd_register = 0 bd_forgot = 0 br.find_element_by_link_text('登录').click() br.find_element_by_link_text('立即注册').click() # bd_register = 0 # for i in br.window_handles: # if i != bd_home: # bd_register = i while True: # 判断窗口权柄是否更新,没有,则再等待0.1秒 if br.window_handles.__len__() == 2: bd_register = br.window_handles[1] break else: sleep(0.1) continue print(br.window_handles) br.switch_to.window(bd_register) br.find_element_by_id('TANGRAM__PSP_4__userName').send_keys('张三') br.switch_to.window(bd_home) br.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click() br.find_element_by_link_text('忘记密码?').click() while True: # 判断窗口权柄是否更新,没有,则再等待0.1秒 if br.window_handles.__len__() == 3: bd_forgot = br.window_handles[1] break else: sleep(0.1) continue print(br.window_handles) br.switch_to.window(bd_forgot) print(br.title) br.switch_to.window(bd_home) br.find_element_by_id('TANGRAM__PSP_4__closeBtn').click() sleep(5) br.quit()
多窗口切换网上大致有两种方法
1、for循环遍历window_handles,通过判断不是已有窗口的权柄,则是新打开窗口的权柄
[code]bd_register = 0 for i in br.window_handles: if i != bd_home: bd_register = i br.switch_to.window(bd_register)
2、直接通过window_handles[1]获取最新窗口的权柄值,值得注意的是,无论打开多少个窗口,最新打开的窗口的权柄值都存储在window_handles[1]中,而window_handles[0]永远是最开始打开的窗口的权柄值。
[code]bd_forgot = br.window_handles[1]
但有时打开新窗口后,window_handles还来不及更新,这时获取的权柄值是不正确的,如果是打开第二个窗口,没更新的window_handles里面只有一个值,这时window_handles[1]会报错,因此在使用前需要对window_handles的长度进行判断,若window_handles的长度与打开的窗口个数一致才进行下一步操作,若是不一致,则再等待一小段时间(这里是0.1秒)
[code] bd_forgot = 0 while True: # 判断窗口权柄是否更新,没有,则再等待0.1秒 if br.window_handles.__len__() == 3: bd_forgot = br.window_handles[1] break else: sleep(0.1) continue br.switch_to.window(bd_forgot)
当然,以上代码可以直接用一个sleep代替,但sleep比较笨重,也会降低脚本的运行速度,因此不推荐使用
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python3+Selenium2完整的自动化测试实现之旅(四):Selenium-webdriver操作浏览器、Cookie、鼠标键盘、警示框、设置等待时间、多窗口切换
- Python+Selenium练习篇之27-多窗口之间切换
- Python_selenium之窗口切换(二)
- python3 selenium 切换窗口的几种方法小结
- Python_selenium之窗口切换
- 使用selenium+python;在页面A点击一个按钮跳转到页面B,页面A没有关闭,浏览器打开了一个B,切换窗口定位页面B的元素
- python selenium打开新窗口,多窗口切换
- 基于python的selenium实现多窗口切换
- Python-Selenium2做Web自动化测试(1)-软件测试分类以及什么时候需要进行自动化测试
- 4000 基于python的selenium实现多窗口切换
- selenium+python自动化测试之多窗口切换
- Python3+Selenium(五)JS打开新窗口、多窗口切换
- python+selenium之窗口切换
- selenium测试(Java)--多窗口切换(十三)
- 一只自动化测试小白的学习记录——Python+Selenium中网页窗口切换
- selenium+python实现窗口切换,iframe切换
- python + selenium 切换窗口
- python selenium2 窗口切换实例
- python selenium打开新窗口,多窗口切换
- 6、python+selenium基础之多窗口和表单切换