一、多表单的切换

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. delphi中TreeView使用(转)

    delphi中TreeView使用(1) TreeView由节点构成,建树通过对TreeView.items属性进行操作.Items是一个TTreeNodes对象,这是一个TTreeNode集. 一. ...

  2. CSS——标签显示模式(display)

    非洲黑人: 皮肤内黑色素含量高,以吸收阳光中的紫外线,保护皮肤内部结构免遭损害,头发象羊毛一样卷曲,使每根卷发周围都有许多空隙,空隙充满空气,卷发有隔热作用. 欧洲白人: 生活寒带或着是说常年温度较低 ...

  3. fastJson中常用方法以及遇到的“坑”

    1.使用fastJson,首先引入fastJson依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> & ...

  4. 牛客多校第九场 B Quadratic equation 模平方根

    题意: 已知 $x+y$ $mod$ $q = b$ $x*y$ $mod$ $q = c$ 已知b和c,求x和y 题解: 容易想到$b^2-4c=x^2-2xy+y^2=(x-y)^2$ 那么开个根 ...

  5. javascript 插件开发教程

    如何自己开发一款js或者jquery插件 引子 初学js不久,接触到js插件开发,其实很简单,不像网上吹嘘的那么复杂,又要掌握js,掌握jquery,其实没有那么复杂,下面简单介绍,供学习使用. jq ...

  6. Unity 之旋转

    代码如下: bool RotateDelta(Vector3 direction) { direction.y = ; if (direction == Vector3.zero) return tr ...

  7. 如果一个文件块有130M,请问有多少个mapper

    如果一个文件块有130M,请问有多少个mapper 130M的文件将被分成2个mapper. 原因:根据FileInputFormat类 有一个成员变量 private static final do ...

  8. 常用sign算法

    所有参数包括appkey或者token拼接成&key=value格式 转小写 正序排序 MD5后得到sign

  9. neo4j数据库迁移---------Neo4j数据库导入导出的方法

    Neo4j数据进行备份.还原.迁移的操作时,首先要关闭neo4j; /usr/share/neo4j/bin neo4j stop 如果出现 Neo4j not running 出现这种情况, Neo ...

  10. Guarded Suspention 要等到我准备好

    线程在运行过程中需要停下来等待,然后再继续执行. 范例程序,一个线程(ClientThread)对另外一个线程(ServerThread)传递请求,实现一个模拟消息通道的功能. public clas ...