• 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"属性链接情况   

  • 相关阅读:
    JS之DOM篇client客户区
    JS只DOM篇事件处理程序
    JS之DOM篇查询计算样式
    JS之DOM篇动态样式
    JS之DOM篇节点操作
    JS之DOM篇节点遍历
    宽带上网障碍分析与处理及ADSL连接故障注意事项
    cn_office_professional_plus_2013 简体中文版发布
    天猫淘宝“双十一”交易额191亿
    NAT设置全攻略
  • 原文地址:https://www.cnblogs.com/wulixia/p/11821702.html
Copyright © 2020-2023  润新知