1.多表单切换

下图为待测页面:内嵌百度首页

切换到百度首页进行操作

1 #coding = utf-8
2
3 from selenium importwebdriver4 importos5 importtime6
7 dr =webdriver.Firefox()8 file_path = 'file:///' + os.path.abspath('frame.html')9 dr.get(file_path)10
11 #切换到iframe(id="if")
12 dr.switch_to.frame("if")13
14 dr.find_element_by_id("kw").send_keys("selenium")15 dr.find_element_by_id("kw").submit()16 time.sleep(3)17
18 dr.close()

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

......#先通过xpath定位到iframe
xf = driver.find_element_by_xpath('//*[@class="if"]')#再将定位对象传给switch_to.frame()方法
driver.switch_to.frame(xf)
......
driver.switch_to.parent_frame()

还有其他方法switch_to.parent_content(), switch_to.default_content()

这些方法我都没用过

2.多窗口切换

以百度首页的登录为例,在百度首页点击【登录】,弹出登录窗口,点击右下角的【立即注册】,跳转到注册页面,再返回首页搜索

1 #coding = utf-8
2
3 from selenium importwebdriver4 importtime5
6 dr =webdriver.Firefox()7 dr.implicitly_wait(10)8 dr.get("http://www.baidu.com")9
10 #获得百度搜索窗口的句柄
11 search_window =dr.current_window_handle12
13 dr.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[7]').click()   #这里试过用class和name去定位都不行
14 time.sleep(3)15 dr.find_element_by_link_text('立即注册').click()  #常试过用这个方法定位左下角的“用户名登录”,但是定位不到
16 time.sleep(3)17
18 #获得当前所有打开的窗口的句柄
19 all_handles = dr.window_handles  #这里得出的是一个list,有两个元素的list,一个是首页的句柄,一个是立即注册的句柄
20
21
22 #进入注册窗口
23 for handle inall_handles:24     if handle != search_window:   #循环到的句柄不是首页的句柄,就是注册的句柄
25         dr.switch_to.window(handle)  #switch_to.window()用于切换到相应的窗口
26         print('now register window!')27         dr.find_element_by_name("userName").send_keys("username")28         dr.find_element_by_name("phone").send_keys("12345678909")29         time.sleep(5)30
31 #回到搜索窗口
32 for handle inall_handles:33     if handle ==search_window:34 dr.switch_to.window(handle)35         print("now search window!")36         dr.find_element_by_id("TANGRAM__PSP_2__closeBtn").click()  #首页悬浮窗口的右上角的关闭按钮
37         dr.find_element_by_id("kw").send_keys("selenium")38         dr.find_element_by_id("kw").submit()39         time.sleep(5)40
41 dr.quit()

综上

switch_to.window() 用于切换到相应的窗口

switch_to.frame() 用于切换到相应的表单

转载于:https://www.cnblogs.com/sue2015/p/9043602.html

Python+Selenium学习笔记8 - 多表单多窗口切换相关推荐

  1. HTML/CSS学习笔记02【表单标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  2. 在php中表单传值怎么用,PHP学习笔记 01 之表单传值

    一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...

  3. python批量自动填写网页表单_使用python+selenium帮助你填写网站表单

    应用场景:频繁往网站.电商平台后台等填写数据. 工作场景:电商上传商品.测试人员.批量提交表单等. 涉及内容:python读写EXCEL文件.selenium基础使用.Xpath基础使用.python ...

  4. Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel

    FormLayout在我们平时开发中使用频率非常高,使用它可快速.方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面.下面通过一个简单示例来体验FormLayout的 ...

  5. TP6框架--EasyAdmin学习笔记:Excel表单导入数据库

    这是我写的学习EasyAdmin的第四章,这一章我给大家分享下Excel表单导入数据库的全流程需要怎么处理并提供案例 首先给大家看下这个功能的原理,下面是PHP连接打印机的代码 public func ...

  6. jQuery学习笔记6:表单选择器

    1    常规选择器 alert($('input').size());      alert($('input').val());  //元素名定位,默认获取第一个    alert($('inpu ...

  7. redux-form的学习笔记二--实现表单的同步验证

    (注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-f ...

  8. html学习笔记之一:表单控件

    一.表单元素<form></form> 主要属性 1)action : 属性值是URL,规定当提交表单时应该思想何处提交数据,为空时表示在当前页面操作: 2)method :表 ...

  9. HTML学习笔记8:表单

    什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms可以用来进入 ...

最新文章

  1. error LNK2001: 无法解析的外部符号 public: static int Pe...
  2. 为什么很多程序员面试造火箭,入职拧螺丝?
  3. 生成树(光棍 牛客, 思维)
  4. 计算硼原子基态能级B---动能和势能
  5. 左神算法:将搜索二叉树转换成双向链表(Java版)
  6. Openstack平台搭建之第二天
  7. 一款功能强大的 IP 查询工具!
  8. 利用BioEdit做多序列一致性比对
  9. 第九章、Zigbee模块指令系统
  10. Python制作表白爱心合集
  11. 获取WI-FI信息以及蜂窝网络信息
  12. Dreamweaver CS6下载及安装步骤
  13. python function gamma_Python math gamma()用法及代码示例
  14. powerdesigner设置 name to comment
  15. Nginx是什么??
  16. 华为鸿蒙手机充电期间系统将进行深度优化
  17. linux编译poco静态库,iOS——为Xcode编译POCO C++静态库
  18. CAS单点登录(http方式)
  19. AVT Mako/Manta面阵相机开发小结
  20. 网络总是迟到吗(把msn空间变成移动空间)

热门文章

  1. 阿里面试题——Java对象初始化
  2. Python:年轻人,不会正则表达式你睡得着觉?有点出息没有?
  3. 使用python的docker-py实现docker的api操作
  4. Linux命令学习笔记之一目录与文件基本操作
  5. Configuring Locales
  6. uml -- unified modeling language 同一建模语言
  7. Jetpack CameraX 最新最全解读-开发实践
  8. android进程优先级的计算
  9. 跨域资源共享的10种方式
  10. .Net内存管理、垃圾回收