一、多表单的切换

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. luoguP3370 【模板】字符串哈希 [hash]

    题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转 ...

  2. Impala的安装和使用

    通过本地yum源进行安装impala 所有cloudera软件下载地址 http://archive.cloudera.com/cdh5/cdh/5/ http://archive.cloudera. ...

  3. redis和redis php扩展安装

    redis的源码安装 wget http://download.redis.io/redis-stable.tar.gz tar -zxvf redis-stable.tar.gz cd redis- ...

  4. HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  1e5个点,问 ...

  5. 3-Ubuntu下python3安装pymysql模块(1)

    命令:sudo pip3 install pymysql

  6. Photoshop基础照片美化

    自从有了“ps”以后,很多事情变成了可能,你可以出现在任何你想在的地方.而最基本的美化照片的功能,我想是很多同学学习PS的初衷.当你掌握了这门技术,很多人会对你刮目相看!今天小编就和大家分享一下ps的 ...

  7. C++中的指针(*)、引用(&)、const详解(一、定义变量)

    一.前言 本人作为一个工作了5年的程序员,程序生涯最初是从c/c++开始的,但是始终不能很熟悉的理解c语言中的指针和c++中的引用,归其原因,一部分自己没有静下心来思考,一部分原因是其自身的复杂性. ...

  8. XMLHTTPRequest状态status完整列表

    当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...

  9. PHP算法之IP 地址无效化

    给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". 示例 ...

  10. jquery无缝向上滚动实现代

    <!DOCTYPE html><html><head><style type="text/css">.renav{width:200 ...