zoukankan      html  css  js  c++  java
  • selenium3+python-多窗口、句柄(handle)

    一、获取当前窗口句柄

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

        2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换。但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了。

        3.获取当前页面的句柄:driver.current_window_handle

    二、获取所有句柄

        1.定位拉钩网招聘产品经理,并点击

        2.点击后,获取当前所以的句柄:window_handles

    三、切换句柄

    方法一:

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

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

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

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

    方法二:

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

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

        1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证

        2.验证完后切关闭新窗口

        3.切回句柄到首页

        4.打印当前页面的句柄,看是否切换到首页了

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("https://www.lagou.com/")
    #关闭切换城市
    driver.find_element_by_id("cboxClose").click()
    driver.implicitly_wait(10)
    #获取当前窗口的句柄
    hand = driver.current_window_handle
    print(hand)
    #点击产品经理打开新的标签
    driver.find_element_by_link_text("产品经理").click()
    #获取所有句柄
    all_hand = driver.window_handles
    print(all_hand)

    #切换句柄
    #判断当前的句柄不等于首页就切换
    for item in all_hand:
    if item != hand:
    driver.switch_to_window(item)
    print(driver.title)

    #方法二,直接在list中切换
    driver.switch_to_window(all_hand[1])
    print(driver.title)

    #关闭新窗口
    driver.close()

    #切换首页
    driver.switch_to_window(hand)
    #打印当前的title
    print(driver.title)

  • 相关阅读:
    抽象类和接口【转】
    JQuery中的事件总结
    ExecuteNonQuery()返回受影响行数不适用select语句
    用js获取对象之前首先检测元素是否存在
    页面如何自动出现滚动条(overflow属性用法)
    今天调试程序遇到了一个致命问题语法错误操作符丢失
    JQuery选择器学习总结JQuery选择器
    css !important用法CSS样式使用优先级判断
    JQuery操作DOM总结
    JQuery特效与动画总结
  • 原文地址:https://www.cnblogs.com/Teachertao/p/10970296.html
Copyright © 2011-2022 走看看