selenium常用操作之窗口切换

我们在做UI自动化时,不得不会遇到一些窗口跳转与弹框,在这种的时候如果不进行切换的话,继续执行脚本必然会报错,所以我们就需要用到切换窗口的方法。

selenium中主要是三种窗口Windows窗口、iframe窗口、alert窗口,前面已经介绍过iframe和alert弹窗的切换,本节只介绍切换windows窗口。

这类窗口也就是我们常说的句柄,句柄的切换是有必要的,我们自己手动在网页上从操作的话,产生新的句柄时浏览器会自动的帮我们跳转到最新的句柄处,但是我们在做UI自动化的时候,代码并不会帮我们自动的切换到最新的句柄,需要我们使用代码去进行切换  

步骤:

1.获取当前所有的窗口

windows=driver.window_handles

2.切换到指定的窗口

driver.switch_to.window(windows[-1])

3.切回原来的窗口

driver.switch_to.window(windows[0])

  

4.获取当前窗口的句柄 

driver.current_window_handle

  

 示例代码

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
handles=driver.window_handles driver.find_element(By.ID, "kw").send_keys("腾讯课堂") driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
复制代码

以上的代码脚本,就会产生一个新的Windows窗口

我们如果直接去执行下一步操作的话,会报错的,所以我们需要先跳转到新的窗口才行

需要加上以下代码:

WebDriverWait(driver,10).until(EC.new_window_is_opened(handles))#等待新窗口出现
windows = driver.window_handles   # 获取该会话所有的句柄
driver.switch_to.window(windows[-1])  # 跳转到最新的句柄

然后我们就可以在这个窗口里面进行新的操作了

 注意:等待条件new_window_is_opened(handles)中是根据当前句柄数的变化来判断的,所以老的handles必须在窗口新增前就定义。

原文地址:https://www.cnblogs.com/123blog/p/12482933.html