• 定位一组元素: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返回最外层的表单

最新文章

  1. jqurey 中dialog未定义问题
  2. Autofac - 服务
  3. Navicat for mysql 破解
  4. Android5.0新特性——图片和颜色(drawable)
  5. SQL表自连接用法
  6. Oracle一些常用的查询命令总结(持续更新)
  7. (摘)Zebra打印机异常处理
  8. Maven学习-简介、安装
  9. linux操作系统基础篇(六)
  10. LINUX0.11 内核阅读笔记
  11. 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等
  12. Spring Cloud Config - RSA简介以及使用RSA加密配置文件
  13. Runtime个别API的使用
  14. CSS选择器权重计算
  15. c语言格式化打印
  16. 机器学习基石笔记:10 Logistic Regression
  17. EF Core扩展工具记录
  18. [cb]Unity 关卡编辑器 开发
  19. 2.1 uml序言
  20. 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型

热门文章

  1. 初学React:组件的样式
  2. ELF文件中section与segment的区别
  3. 编译安装 mysql 5.5,运行 cmake报错Curses library not found
  4. Java连接mysql中遇到的一些问题及解决方法
  5. Python-程序模块化
  6. Linux下进程信息的深入分析[转]
  7. javaweb基础(38)_事务
  8. Oracle Like、Instr以及正则表达式
  9. html5 canvas中CanvasGradient对象用法
  10. 常用的功能封装 pool.js