业务中可能会存在如下测试场景:
在自动化运行过程中,通过新获取的URL访问其他页面,需重新打开一个tab页,在另一个tab页上进行元素查找校验等一系列验证工作,但此时元素的定位等操作仍停留在第一个页面,如何进行页面操作,使得driver切换至新tab,本文讲解两种方式:
1、重新启动一个driver
当获取一个新的url时,可重新启动一个driver,并get这个url,此时浏览器会再开一个,当然比较耗性能,但可满足业务需求,按照脚本执行步骤,在新的url里进行业务验证;
driver_new = None
if BROWSER_TYPE == "Firefox":
driver_new = webdriver.Firefox(executable_path=ff_driver_path)
elif BROWSER_TYPE == "Chrome":
driver_new = webdriver.Chrome(executable_path=chrome_driver_path, options=options)
elif BROWSER_TYPE == "IE":
driver_new = webdriver.Ie(executable_path=ie_driver_path)
driver_new.set_window_size(1920, 1080)
logger.info(driver_new.get_window_size())
driver_new.get(share_url)
2、使用driver切换window_handles
init_driver.execute_script("window.open('{}');".format(share_url))
window_after = init_driver.window_handles[1]
init_driver.switch_to.window(window_after)
# {
# do some check
# }
window_before = init_driver.window_handles[0]
init_driver.switch_to.window(window_before)
此方法使用driver切换window_handles,window_handles是个列表,默认从0开始,新打开一个列表+1,值得注意的是,当driver切换至其他windows_handles并执行完操作后,切换回初始windows_handles需再进行一次切换操作。