webdriver--定位一组元素+iframe表单切换
- 定位一组元素:find_elements,返回的是list,所以可以用列表的索引对列表里的某个元素操作,也可以用for循环访问list,依次操作各元素
driver.find_elements_by_name("OpenType")[1].click()#公开类型
#推送范围
for push in driver.find_elements_by_name("GroupName"):
push.click()
time.sleep(1)定位一组元素时,形成的是list,所以list的相关语法都可以使用,切片、添加、删除、遍历都可以
- iframe表单切换
最开始接触到这个iframe切换的契机是,当时页面有个弹窗,按照网上查找到的弹窗处理方式,获取句柄,然后切到该弹窗,再定位弹窗内的元素。但是怎么都无法成功,定位不到弹窗里的元素。后来问开发,看了看前端代码,原来这个弹窗不是window窗口,而是iframe表单嵌套页面,所以执行出错。webdriver只能在一个页面上对元素识别和定位,对frame/iframe表单内嵌页面的元素无法直接定位,所以也是需要通过swtich_to.frame()将当前定位的主题切换到表单内,表单处理完,还需要再切回原主体,才能再继续操作原主体的元素。所以啊,还是需要对前端了解熟悉才行,需要学习的更多了。。。
这段就是当时碰到的iframe嵌套的弹窗
#课程基础知识页的章节选择
1 driver.find_element_by_id("menuled").click()
driver.switch_to.frame("layui-layer-iframe1")#刚好id唯一,用id定位
driver.find_elements_by_class_name("ico-round")[0].click()#选择某个章节
driver.find_element_by_class_name("u-btn-clagre").click()
driver.switch_to.default_content()#返回基础页
这段是页面的一个富文本的控件,用iframe嵌套的
#检测任务维护页面
1 driver.get("http://www.zgckxt.com/THome/PC_SelfLearn/Index?id=1056&type=1")
driver.find_element_by_css_selector("div.m-ico>a.marr20>i.ico-queedit").click()
time.sleep(5)
driver.find_element_by_css_selector("#sinquestion").click()#选择检测任务:单选题
time.sleep(5)#选择题型后,题干和选项会有个加载时间,所以需要设置页面等待时间
list = driver.find_elements_by_css_selector(".cke_wysiwyg_frame")#从学习任务到检测任务的解析,一共7个这种iframe嵌套的控件
#del list[0]
list.pop(0)#去掉学习任务
list.pop()#去掉题目解析
n = 0
for qframe in list:
if n == 0:
driver.switch_to.frame(qframe)
driver.find_element_by_css_selector(".cke_editable").send_keys("单选题题干")
driver.switch_to.default_content()
js = "window.scrollTo(document.documentElement.scrollTop,document.documentElement.scrollLeft+600);"
driver.execute_script(js)
else:
driver.switch_to.frame(qframe)
driver.find_element_by_css_selector(".cke_editable").send_keys("单选题选项%d"% n)
driver.switch_to.default_content()
n = n + 1
23 driver.find_element_by_xpath(".//*[@id='rightbox']/div[4]/div[2]/a[2]").click()
time.sleep(3)
可以用switch_to.parent_content()方法跳出当前表单,返回上一级,default_content返回最外层的表单
webdriver--定位一组元素+iframe表单切换的更多相关文章
- Selenium 3----定位一组元素+多表单切换+多窗口切换
定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...
- selenium - webdriver - 定位一组元素
八种方法: find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_t ...
- selenium 多表单切换处理(iframe/frame)
在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver 只能在同一页面识别定位元素 ...
- selenium webdriver——多表单切换与多窗口切换
多表单切换 >>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无 ...
- frame/iframe多表单切换
应用场景: 在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这时就 ...
- python+selenium之多表单切换
在Web应用中经常会遇到fram/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于fram/iframe表单内嵌套页面上的元素无法直接定位.这是需要通过swit ...
- web自动化测试-selenium多表单切换
一.概述 1.在web应用中会经常遇到frame/iframe表单嵌套页面的应用 2.WebDriver只能在一个页面上对元素进行识别与定位 3.对于frame/iframe表单内嵌的页面上元素无法识 ...
- Selenium常用API的使用java语言之13-多表单切换
在 Web 应用中经常会遇到 frame/iframe 表单嵌套页面的应用, WebDriver 只能在一个页面上对元素识别与 定位, 对于 frame/iframe 表单内嵌页面上的元素无法直接定位 ...
- Selenium 2自动化测试实战15(多表单切换)
一.多表单切换 在web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这 ...
随机推荐
- 动态原型模式 js
动态原型模式 function Person(name,age){ this.name = name; this.age = age; if(typeof this.sayName != " ...
- 表单(三):select
选择框的value属性 <select name='location' id='selLocation'> <option value='Sunnyvale,Ca'>Sunny ...
- chapter1-printf.py
#!/usr/bin/env python # _*_ coding:utf-8 _*_ from ctypes import * libc = CDLL("libc.so.6") ...
- ceph-文件存储
文件存储 ceph文件系统提供了任何大小的符合posix标准的分布式文件系统,它使用Ceph RADOS存储数据.要实现ceph文件系统,需要一个正在运行的ceph存储集群和至少一个ceph元数据服务 ...
- CUDA中多维数组以及多维纹理内存的使用
纹理存储器(texture memory)是一种只读存储器,由GPU用于纹理渲染的图形专用单元发展而来,因此也提供了一些特殊功能.纹理存储器中的数据位于显存,但可以通过纹理缓存加速读取.在纹理存储器中 ...
- django批量form表单处理
1.应用说明 一般在表单信息录入中,如果存在许多重复提交的信息,我们就需要进行批量处理,比如学生信息的批量录入. 这里一种方式就是使用xlrd模块处理,把学生信息录入到系统内 另外一种方式就是采用我们 ...
- fastjson 应用
fastjson优势就是解析快,用法和json-lib.jar差不多(如下图) 贴心的附上jar和反编译工具:https://pan.baidu.com/s/1iADAiFyoUZVBAFSPsIeY ...
- codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)
http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n ...
- WIN10下解决Failed installing tomcat X service
Win10下无法安装Tomcat的service.bat 来看本文的网友想必已经在自己电脑的cmd看了几百遍的Failed installing tomcat X service 字样,也认真检查过自 ...
- tcp文件下载客户端+服务端
客户端: import socket if __name__ == '__main__': # 创建tcp客户端socket tcp_client_socket = socket.socket(soc ...