Python selenium新窗口和老窗口的切换

在平时的自动化测试时,经常会遇到从当前的页面操作后跳转到一个新打开的窗口页面。这时候就需要在新老多个窗口间进行切换了。例如我下面的例子,首先在浏览器中打开百度www.baidu.com,然后在检索框中输入需要检索的内容“selenium”,点击“百度一下”。点击百度翻译,跳转到百度翻译页面。切换句柄到百度翻译页面,关闭该页面。回到百度搜索页,关闭浏览器。 

from selenium import webdriver
import time
'''
本案例主要来说明新老窗口的切换
'''

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")

# 打印当前操作界面的句柄
current_handle = driver.current_window_handle
print('current_handle', current_handle)
driver.implicitly_wait(2) # 如果找到了就继续,否则2秒等待
driver.find_element_by_id("kw").send_keys("selenium") # 在搜索框中输入‘selenium’关键字
time.sleep(2) # 强制等待2秒

# 获取当前打开页的所有句柄并打印,应该只有一个
all_handles = driver.window_handles
print('all_handles', all_handles)
# 找到百度一下的按钮,点击
driver.find_element_by_id("su").click()

# 点击后进入新窗口,新窗口有自己的句柄
# 找到百度翻译,点击
driver.find_element_by_link_text("百度翻译").click()

# 获取进入新窗口后所有的句柄,并打印当前所有的句柄,此次应该有两个了
all_handles2 = driver.window_handles
print('all_handles2', all_handles2)
driver.implicitly_wait(2)

# 拿到新窗口句柄
newhandle = [handle for handle in all_handles2 if handle not in all_handles]
# 打印新窗口
print('newhandle', newhandle[0])
# 切换到新窗口
driver.switch_to.window(newhandle[0])
time.sleep(2)
# 打印新窗口的title
print('新窗口的title:', driver.title)
# 关闭当前窗口
driver.close()

driver.implicitly_wait(5)
time.sleep(1)
# 切换到原窗口
driver.switch_to.window(all_handles[0])
# 打印原窗口的title和切换后的句柄
print('原有老窗口的title:', driver.title)
print(driver.current_window_handle)
# 退出关闭浏览器
driver.quit()

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值