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表单内嵌页面上的元素无法直接定位.这 ...
随机推荐
- RF脚本中的坑1: SyntaxError: invalid token
话不多说,直接上调试脚本: 执行后${b}=8:没问题.然后${a}改成08继续: 执行后居然报错了: 经过多次尝试08或者09时,都会报SyntaxError错误:后来查阅语法,才恍然大悟:Pyth ...
- 在写EF 时把时间格式化的做法
SELECT COUNT(l.LogSeq), date_format(l.CreateDate,'%Y-%m') CreateDateByMonth FROM LOL l WHERE l.Creat ...
- LayoutParams布局
AbsoluteLayout.LayoutParams可以重新设置坐标,然后调用setLayoutParamsLinearLayout.LayoutParams可以调用setMargins();来移动 ...
- 20145238-荆玉茗 《Java程序设计》第7周学习总结
20145238 <Java程序设计>第7周学习总结 教材学习内容总结 第13章时间与日期 13.1.1 ·即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix时间)时间. ...
- 机器学习实战之Logistic回归
Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...
- ORB-SLAM使用方法
preparation:按照官網步驟完成ORB的安裝. 1.修改Camera calibration參數:到~/ORB_SLAM/Data/Settings.yaml修改 2.開啟終端機 -&g ...
- Javascript Ajax 请求
var XMLHttpReq; function createXMLHttpRequest() { try { XMLHttpReq = new ActiveXObject("Msxml2. ...
- js 动态创建标记
innerHTML:一旦使用了这个属性,它的全部内容都要被替换掉.且不会返回任何对刚插入的内容的引用 与document.write()方法一样,innerHTML属性也是HTML专有属性,不能用于任 ...
- react手动搭建解析
1.创建项目名<react-progect> ->项目文件下创建package.json文件 ->项目下执行命令:cnpm initcnpm i webpack webpack ...
- gd库 给底图写入文字问题
png-8的图片 设置颜色会返回false,换成png-24的就可以了