python3+selenium入门11-窗口切换

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

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

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

from selenium import webdriver
import time

dr = 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)#执行js
handles = 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 webdriver
import time

dr = 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()

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值