py+selenium切换到新弹出窗口通用方法

from selenium import webdriver
import time
'''
本案例主要来说明新老窗口的切换
'''
 
driver = webdriver.Firefox()
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()
time.sleep(5)
# 点击后进入新窗口,新窗口有自己的句柄
# 找到百度翻译,点击
#driver.find_element_by_link_text("百度翻译").click()
#driver.find_element_by_link_text(str(u"百度翻译".encode('utf-8'))).click()
#driver.find_element_by_link_text("百度百科").click()
driver.find_element_by_xpath(".//*[@id='4']/h3[1]/a[1]").click()
time.sleep(20)
 
# 获取进入新窗口后所有的句柄,并打印当前所有的句柄,此次应该有两个了
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()

原文地址:https://www.cnblogs.com/jie-2019/p/11970386.html