一、多表单的切换

frame:HTML页面中的一中框架,主要作用是在当前页面中指定区域显示另一页面元素;

             (HTML语言中,frame/iframe标签为表单框架)

  • 在web应用中会遇到frame或者iframe表单嵌套页面的应用,对于表单内嵌页面上的元素无法直接进行定位
  • 通过driver.switch_to.frame("id|name")方法将当前定位的主体切换为frame或iframe表单的内嵌页面中
  • 恢复默认页面方法:driver.switch_to.default_content()
  • 以126邮箱登录功能为例,代码如下
  • from selenium import webdriver
    import time
    from webdriver.common.action_chains import ActionChains driver=webdriver.Firefox()
    driver.get("https://mail.126.com/")
    driver.maximize_window()
    driver.find_element_by_id("switchAccountLogin").click()
    time.sleep(1)
    #定位当内嵌表单中
    driver.switch_to.frame("")#因id是动态的,通过name进行定位
    driver.find_element_by_name("email").send_keys(13212345678)
    time.sleep(1)
    driver.find_element_by_name("password").send_keys(12345678)
    time.sleep(1)
    #恢复到默认页面
    driver.switch_to.default_content()
    driver.quit()
#以麦子学院为例:
from selenium import webdriver
import time driver=webdriver.Firefox()
driver.get("http://www.maiziedu.com/")
time.sleep(10)
driver.switch_to.frame("chatIframe")#进入嵌套表单页面
driver.find_element_by_xpath('//*[@id="chat-close"]').click()
driver.switch_to.default_content()#恢复到默认页面
time.sleep(2)
driver.find_element_by_link_text('登录').click()
driver.find_element_by_id('id_account_l').send_keys("1234qw3486029")
driver.find_element_by_id('id_password_l').send_keys(12345)
driver.find_element_by_id('login_btn').click()
time.sleep(2) driver.quit()

二、多窗口切换
说明:在HTML页面中,经常有a标签也就是超链接,这些链接在执行时,有的会在新的窗口的打开链接

1、多窗口切换

说明:在WebDriver中的封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法

(句柄:窗口的唯一开标识码)

2、方法:

(1)driver.current_window_handle   获取当前窗口句柄

(2)driver.window_handles      获取所有窗口句柄

(3)driver.switch_to.window(handle)   切换指定句柄窗口

(4)driver.close()    关闭当前的句柄

(5)driver.quit()    关闭浏览器

from selenium import webdriver
import time driver=webdriver.Firefox()
#进入百度首页-搜索麦子学院
driver.get('https://www.baidu.com')
time.sleep(2)
driver.find_element_by_id('kw').send_keys('麦子学院')
driver.find_element_by_id('su').click()
time.sleep(2)
#搜索麦子学院首页
driver.find_element_by_partial_link_text('专业IT职业教育平台').click()
time.sleep(2)
#跳转到百度引擎页面
driver.switch_to.window(driver.window_handles[0])#获取窗口的句柄,并跳转到第一个句柄
time.sleep(2)
#跳转回麦子学院首页
driver.switch_to.window(driver.window_handles[1])#跳转回麦子学院首页
time.sleep(2)
#关闭麦子学院首页句柄
driver.close()
time.sleep(2) #退出浏览器
driver.quit()

selenium基础(多表单切换、多窗口切换)的更多相关文章

  1. selenium+Python(表单、多窗口切换)

    1.多表单切换 在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这 ...

  2. Python+selenium(多表单、多窗口切换)

    多表单切换 案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作 Frame.html <html> <head> <title>Frame_test& ...

  3. 『心善渊』Selenium3.0基础 — 16、Selenium对iframe表单的操作

    目录 1.什么是iframe表单 2.iframe表单操作流程 3.iframe表单操作常用方法 (1)进入表单 (2)多表单切换 4.表单操作示例 1.什么是iframe表单 实际上就是HTML页面 ...

  4. Bootstrap<基础六> 表单

    Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单. 表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 ...

  5. [06]HTML基础之表单标签

    1. <form>标签 表单容器,指定method属性和action属性是个良好的习惯. <form methor="POST" action="htt ...

  6. Selenium 3----定位一组元素+多表单切换+多窗口切换

    定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...

  7. selenium webdriver——多表单切换与多窗口切换

    多表单切换 >>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无 ...

  8. Selenium:多表单(frame/iframe)切换(Switch模块)

    frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...

  9. Selenium WebDriver多层表单切换

    [Java] 首先 测试网站frame结构为 -topframe: -centerframe: -leftframe: -mainframe: -bottomframe: 我当时遇到的问题是,首先在c ...

  10. python+selenium之多表单切换

    在Web应用中经常会遇到fram/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于fram/iframe表单内嵌套页面上的元素无法直接定位.这是需要通过swit ...

随机推荐

  1. thinkphp 模板驱动

    模板引擎驱动完成了第三方模板引擎的支持,通过定义模板引擎驱动,我们可以支持Smarty.TemplateLite.SmartTemplate和EaseTemplate等第三方模板引擎. 默认的模板引擎 ...

  2. 01退背包——bzoj2287

    退背包就是限制某一件物品不可取的方案数 先做出无限制的方案数,然后对于当前不可取的物品,dp2[j]表示不取改物品情况下,取得体积为j的方案数 有状态方程 dp2[j]=dp1[j]-dp2[j-w[ ...

  3. NX二次开发-将工程图上的每个视图导出PNG图片

    大概思路是将每个视图导出PDF,在调另一个项目的EXE(PDF转PNG) //ExportDrawViewPng // Mandatory UF Includes #include <uf.h& ...

  4. 微信小程序--跳转页面常用的两种方法

    一.bindtap="onProductsItemTap"绑定点击跳转事件 在.wxml文件中绑定 在.js文件中实现绑定事件函数 二.navigator标签配合URL跳转法 在w ...

  5. [JZOJ 5804] 简单的序列

    思路: 似乎和某次培训的题很像啊... 将左括号记为1,右括号记为-1,那么最终一定加和为0,然后再求最小前缀和. 用dp解决即可. #include <bits/stdc++.h> us ...

  6. 移动端多选插件-jquery

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 秦曾昌人工智能课程---7、决策树集成学习Tree Ensembles

    秦曾昌人工智能课程---7.决策树集成学习Tree Ensembles 一.总结 一句话总结: 其实机器模型减少variance的比较好的方式就是 多个模型取平均值 1.CART是什么? classi ...

  8. Java-Class-@I:org.springframework.stereotype.Service

    ylbtech-Java-Class-@I:org.springframework.stereotype.Service 1.返回顶部   2.返回顶部 1. package com.ylbtech. ...

  9. 从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1)

    从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1) 假设数据已经是排序好的 #include <stdio.h> #include & ...

  10. VBA提取HTML文件信息

    Sub test()    Dim html As Object, D As Object, W As Object, arr()    Set html = CreateObject("m ...