一、多表单的切换

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. QT install

    { https://www.bilibili.com/video/av18148008?from=search&seid=15361598961528715331 }

  2. 经典换根dp——hdu2196

    给定一棵边权树,求距离每个点最远的点,输出这个距离 #include<bits/stdc++.h> using namespace std; #define N 10005 ]; int ...

  3. 暑假集训test-8-30

    这套题有毒,T1标程挂了,T2题面完全莫名其妙,T3没有告诉取模害我打了好久高精... A题. 统计每个数后面比它小的数的个数记作f把,操作一个数就是把它后面所有比它小的数和它的f清0,然后若是它到它 ...

  4. (转)简述负载均衡&CDN技术

    转:http://www.cnblogs.com/mokafamily/p/4402366.html#commentform 曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维 ...

  5. python从入门到大神---3、浮光掠影python3语法

    python从入门到大神---3.浮光掠影python3语法 一.总结 一句话总结: 语法不必一次记全部,效率太差,用哪部分内容,就把那部分内容全部记下来 1.python3中单引号和双引号的区别是什 ...

  6. LeetCode 197. Rising Temperature (上升的温度)

    题目标签: 题目给了我们一个 温度表格,让我们找到 所有温度比之前一天高的,返回id. 建立 Weather w1, Weather w2,找到当w1 的温度 大于 w2 的时候,而且 w1 的日期是 ...

  7. Windows环境下安装openface

    由于昨天在学习人脸识别,就涉及到了openface 我使用的是Windows环境下的pycharm开发工具,昨天一直安装openface但就是没有相关的教程,使用pip install openfac ...

  8. 解决ios10及以上Safari双击和双指缩放无法禁止的问题

    移动端web缩放有两种: 1.双击缩放: 2.双指手势缩放. 在iOS 10以前,iOS和Android都可以通过一行meta标签来禁止页面缩放 <meta content="widt ...

  9. SparkListener监听使用方式及自定义的事件处理动作

    本文针对spark 2.0+版本 概述 spark 提供了一系列整个任务生命周期中各个阶段变化的事件监听机制,通过这一机制可以在任务的各个阶段做一些自定义的各种动作.SparkListener便是这些 ...

  10. 《转》python学习基础

    学习的python本来想自己总结,但是发现了一篇不错的大牛的博客,拿来主义,,又被我实践了 关于前两篇如果总结的不详细,因此把他人的转载过来 http://www.cnblogs.com/BeginM ...