博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3+selenium入门11-窗口切换
阅读量:6695 次
发布时间:2019-06-25

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

在打开新的浏览器窗口时,如果要定位新窗口的元素,需要先切换到这个新打开的窗口中,才能定位到该窗口下的元素。

current_window_handle:获取当前句柄。可以把句柄理解成窗口的身份证

window_handles:获取所有打开窗口的句柄

from selenium import webdriverimport timedr = webdriver.Chrome()dr.get('https://www.baidu.com')dr.maximize_window()win_handle = dr.current_window_handle#获取当前窗口句柄print(win_handle)js = 'window.open("http://news.baidu.com")'#js打开新窗口dr.execute_script(js)#执行jshandles = dr.window_handles#获取所有窗口句柄for i in handles:    if i != win_handle:#如果句柄不是当前窗口的句柄        dr.switch_to.window(i)#切换窗口ww = dr.find_element_by_id('ww')#新闻页面的搜索输入框ww.send_keys('selenium')time.sleep(2)dr.switch_to.window(win_handle)#切换到百度首页的句柄tr = dr.find_element_by_id('kw')#百度首页搜索框tr.send_keys('selenium')dr.quit()

​这是打印出来的句柄

因为使用WebDriver点击百度新闻不会新打开一个页面,所以就通过js来模拟打开一个新网页了。通过循环所有句柄,当句柄不是当前窗口的句柄,就切换到这个窗口去。

 

 

 

from selenium import webdriverimport timedr = webdriver.Chrome()dr.get('https://www.baidu.com')dr.maximize_window()js = 'window.open("http://news.baidu.com")'dr.execute_script(js)handles = dr.window_handles#获取所有窗口句柄dr.switch_to.window(handles[1])ww = dr.find_element_by_id('ww')#新闻页面的搜索输入框ww.send_keys('selenium')time.sleep(2)dr.switch_to.window(handles[0])tr = dr.find_element_by_id('kw')#百度首页搜索框tr.send_keys('selenium')dr.quit()

所有窗口句柄是一个数组,可以通过数组的下标来访问相应的句柄,默认是按照打开窗口的顺序存的。

转载于:https://www.cnblogs.com/myal/p/9378992.html

你可能感兴趣的文章
实现主从关系Form中汇总行金额/数量
查看>>
Python学习笔记:协程
查看>>
原生js完成拼图小游戏
查看>>
[Algorithms] Radix Sort
查看>>
Eclipse打jar包的方法
查看>>
[WP7]关于退出时确认对话框的实现
查看>>
每日一记--迷茫
查看>>
mybatis like 查询
查看>>
Centos硬件信息
查看>>
Maven 打包
查看>>
Map接口
查看>>
AlertWindowManager 弹出提示窗口使用帮助(上)
查看>>
如何在一个Activity里使用另一个xml布局文件
查看>>
饼图图例中显示百分比值
查看>>
forward和redirect
查看>>
打开hibernate文件报警告
查看>>
linux安装IDEA 2017
查看>>
Intellij IDEA 去掉Mapper文件中的背景
查看>>
Docker 安装 mysql
查看>>
阅读笔记《全景探秘游戏设计艺术》
查看>>