zoukankan      html  css  js  c++  java
  • python+selenium个人学习笔记5-多窗口和多表单切换

    多窗口和多表单

    一、多窗口

    在实际操作中,有些页面的链接点击会弹出一个新的窗口。这时候如果需要到新的窗口上进行操作,就需要学会窗口切换了。

    1、获得当前窗口句柄:

    driver.current_window_handle

    2、获取当前所有的句柄:

    driver.window_handles

    3、切换到相应的窗口:

    driver.switch_to.window()

    示例:

    复制代码
    from selenium import webdriver
    from time import sleep
    driver = webdriver.Chrome()
    driver.get("http://www.baidu.com")
    #获取当前窗口句柄
    sreach_windows = driver.current_window_handle
    driver.find_element_by_link_text('登录').click()
    sleep(2)
    driver.find_element_by_link_text("立即注册").click()
    # 获得当前所有打开的窗口的句柄
    all_handles = driver.window_handles
    #判断句柄是不是首页句柄
    for handle in all_handles:
        if handle != sreach_windows:
            # sleep(5)
            # driver.switch_to.window(sreach_windows)#不是,切换到首页
            sleep(5)
            driver.switch_to.window(handle)#不是,切换到注册页面
            sleep(5)
    driver.quit()
    复制代码

    二、多表单

    在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,Frame与Iframe两者可以实现的功能基本相同,不过frame是整个页面的框架,iframe是内嵌的网页元素。WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。

    1、切换iframe

    driver.switch_to.frame()

    switch_to.frame() 默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。

    x_frame = driver.find_element_by_xpath("//*[@id="9"]")
    driver.switch_to.frame(x_frame)

    2、释放iframe

    driver.switch_to.default_content()

    示例:

    复制代码
    from selenium import webdriver
    from time import sleep
    driver = webdriver.Chrome()
    driver.get("http://mail.163.com/")
    sleep(2)
    # 切换iframe
    driver.switch_to.frame("x-URS-iframe")
    driver.find_element_by_name("email").send_keys("chen")
    driver.find_element_by_name("password").send_keys("chen")
    # 释放iframe
    driver.switch_to.default_content()
    sleep(5)
    复制代码
  • 相关阅读:
    Algs4-2.3.11快排遇与切分值相同时继续扫描是平方级
    使用kubeadm搭建Kubernetes集群
    kubernetes发布解释型语言应用的最佳实践
    docker化php项目发布方式
    linux服务器免密钥登录
    cp 递归复制时 复制实际文件而不是链接文件
    nginx配置http访问自动跳转到https
    nfs服务器
    nginx防止恶意域名解析
    如何建立自己的知识体系?(摘)
  • 原文地址:https://www.cnblogs.com/txx403341512/p/9353758.html
Copyright © 2011-2022 走看看