letheashura 2020-05-19
在我们进行测试的过程中,经常会遇到点开超链接打开另一个新窗口的情况,即 target="_blank",这种情况下,如果要在新窗口进行操作,需要将焦点移到新窗口上,本文将介绍这种情况的处理
切换窗口的方法:
1.获取当前页面窗口的句柄 current_window_handle 2.获取所有页面窗口的句柄 window_handles 3.切换句柄 switch_to_window(window_name)
实验过程:
打开百度页面 - 点击左上角的“新闻” - 切换到百度新闻的窗口 - 获取新页面的title
实验代码:
from selenium import webdriver import time if __name__ == ‘__main__‘: driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") driver.find_element_by_link_text("新闻").click() # 获取当前窗口句柄 current_handle = driver.current_window_handle # 获取所有句柄 handles = driver.window_handles # 遍历句柄,并切换到句柄 for handle in handles: if handle != current_handle: driver.switch_to.window(handle) time.sleep(3) print(driver.title)
还有一种方式,可以根据目标页面的title或者url进行切换,以下以title为例
from selenium import webdriver import time if __name__ == ‘__main__‘: driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") driver.find_element_by_link_text("新闻").click() # 获取当前窗口句柄 current_handle = driver.current_window_handle # 获取所有句柄 handles = driver.window_handles # 先切换到每一个handle上,获取页面的title,如果title和目标一致,则停下来 for handle in handles: driver.switch_to.window(handle) title = driver.title if "百度新闻——海量中文资讯平台" == title: break print(driver.title)
总结:核心内容还是确定好要去的具体页面,然后切换过去。第一种方式感觉适合只新开一个窗口的情况,比较简单。如果有多个窗口,可以采用第二种方式。
5.环境变量配置在linux系统下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里面方法一:将文件移动到属于环境变量目录中sudo mv chromedriver /user/bin