Python+Selenium学习笔记8 - 多表单多窗口切换
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 - 多表单多窗口切换相关推荐
- HTML/CSS学习笔记02【表单标签】
w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...
- 在php中表单传值怎么用,PHP学习笔记 01 之表单传值
一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...
- python批量自动填写网页表单_使用python+selenium帮助你填写网站表单
应用场景:频繁往网站.电商平台后台等填写数据. 工作场景:电商上传商品.测试人员.批量提交表单等. 涉及内容:python读写EXCEL文件.selenium基础使用.Xpath基础使用.python ...
- Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel
FormLayout在我们平时开发中使用频率非常高,使用它可快速.方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面.下面通过一个简单示例来体验FormLayout的 ...
- TP6框架--EasyAdmin学习笔记:Excel表单导入数据库
这是我写的学习EasyAdmin的第四章,这一章我给大家分享下Excel表单导入数据库的全流程需要怎么处理并提供案例 首先给大家看下这个功能的原理,下面是PHP连接打印机的代码 public func ...
- jQuery学习笔记6:表单选择器
1 常规选择器 alert($('input').size()); alert($('input').val()); //元素名定位,默认获取第一个 alert($('inpu ...
- redux-form的学习笔记二--实现表单的同步验证
(注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-f ...
- html学习笔记之一:表单控件
一.表单元素<form></form> 主要属性 1)action : 属性值是URL,规定当提交表单时应该思想何处提交数据,为空时表示在当前页面操作: 2)method :表 ...
- HTML学习笔记8:表单
什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms可以用来进入 ...
最新文章
- error LNK2001: 无法解析的外部符号 public: static int Pe...
- 为什么很多程序员面试造火箭,入职拧螺丝?
- 生成树(光棍 牛客, 思维)
- 计算硼原子基态能级B---动能和势能
- 左神算法:将搜索二叉树转换成双向链表(Java版)
- Openstack平台搭建之第二天
- 一款功能强大的 IP 查询工具!
- 利用BioEdit做多序列一致性比对
- 第九章、Zigbee模块指令系统
- Python制作表白爱心合集
- 获取WI-FI信息以及蜂窝网络信息
- Dreamweaver CS6下载及安装步骤
- python function gamma_Python math gamma()用法及代码示例
- powerdesigner设置 name to comment
- Nginx是什么??
- 华为鸿蒙手机充电期间系统将进行深度优化
- linux编译poco静态库,iOS——为Xcode编译POCO C++静态库
- CAS单点登录(http方式)
- AVT Mako/Manta面阵相机开发小结
- 网络总是迟到吗(把msn空间变成移动空间)