zoukankan      html  css  js  c++  java
  • 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必须在窗口新增前就定义。

  • 相关阅读:
    HTML5兼容性问题
    网站——如何实现轮播效果
    总结(1)
    MAC_terminal_终端设置
    JS_tips(updating):执行时间;
    Object:window_方法
    Object:Array数组——对象的集合
    Object:Math——对数据的数学计算
    js 统计字符串或者数组的出现次数
    react-native项目实战积累
  • 原文地址:https://www.cnblogs.com/123blog/p/12482933.html
Copyright © 2011-2022 走看看