selenium常用操作之窗口切换

 ̄綄美尐妖づ 提交于 2020-03-12 22:34:11

我们在做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必须在窗口新增前就定义。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!