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

  • 相关阅读:
    12345679*81=?
    怪异,漂亮的几个数学恒等式(转)
    道路着色问题
    一组数学算式的欣赏(转)
    数学中奇妙的“金蝉脱壳”(转)
    数学中的分分合合(转)
    四方定理和卡布列克常数(转)
    简单的题目 有趣的现象
    Android学习笔记 第三节 基本控件学习
    Android学习笔记 第二节 HelloWorld程序
  • 原文地址:https://www.cnblogs.com/123blog/p/12482933.html
Copyright © 2011-2022 走看看