zoukankan      html  css  js  c++  java
  • python UI自动化之处理多窗口

    前言

    有些页面的链接打开后,会重新打开一个窗口,想要在新页面上操作,就需要先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。

    1、元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别

    获取当前窗口的句柄

    driver.current_window_handle 

    获取所有窗口的句柄

    driver.window_handles
    

    2、切换句柄

    方法一:

        1.循环判断是否与首页句柄相等

        2.如果不等,说明是新页面的句柄

        3.获取的新页面句柄后,可以切换到新打开的页面上

        4.打印新页面的title,看是否切换成功

    for  i in all_h:
        if i != h:
            driver.switch_to.window(i)
            print driver.title

    方法二:

        1.直接获取all_h这个list数据里面第二个hand的值:all_h[1]

    driver.switch_to.window(all_h[1])
    

    3、关闭新窗口,切回主页

    driver.close()
    driver.switch_to.window(h)
    

    另js也可以处理多窗口

    (1)、比如登录百度后,点击百度的网页链接会打开一个新的窗口 (只有登录的才会打开新的窗口,不登录是不会的) 

     (2)、查看元素属性:target="_blank"

    (3)、去掉target="_blank"属性

    1.因为此链接元素target="_blank",所以打开链接的时候会重新打开一个标签页,那么解决这个问题,去掉该属性就可以了。

    2.为了验证这个问题,可以切换到html编辑界面,手动去掉“_blank”属性

    3.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签页打开

    (4)、js去掉target属性

    js = 'document.getElementById("id").target="";'
    driver.execute_script(js)
    

    注意:并不是所有的链接都适用于本方法,本篇只适用于有这个target="_blank"属性链接情况   

  • 相关阅读:
    java object bean 转map
    常用css
    mysql 生成max+1编号
    MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
    cookie记住账户密码
    session有效时间
    常用jstl
    高性能MySQL--innodb中事务的隔离级别与锁的关系
    mysql8.0.11的坑早知道
    git进阶--你可能不知道的很好用git功能
  • 原文地址:https://www.cnblogs.com/wulixia/p/11821702.html
Copyright © 2011-2022 走看看