博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium 2自动化测试实战15(多表单切换)
阅读量:4595 次
发布时间:2019-06-09

本文共 1166 字,大约阅读时间需要 3 分钟。

一、多表单切换

在web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to_frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。

#frame.html

frame

在此代码中,通过iframe表单嵌入一个百度页面,用浏览器打开如下图所示

 

 

这时候直接定位页面上的百度的输入框一定会报错:找不到元素。因此可以使用switch_to.frame()先找到frame.html中的<iframe>标签,然后再定位百度输入框。

#frame.py#coding:utf-8from selenium import webdriverimport os,timedriver=webdriver.Chrome()file_path='file:///'+os.path.abspath('frame.html')driver.get(file_path)#切换到iframe(id='if')driver.switch_to_frame("if")#下面就可以正常的操作元素了driver.find_element_by_id("kw").send_keys("selenium")driver.find_element_by_id("su").click()time.sleep(3)driver.quit()

switch_to.frame()默认可以直接取表单的id或那么属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。

#frame.py…..#先通过xpath定位到iframexf=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.frame()方法。除此之外,在进入多级表单的情况下,还可以通过switch_to.default_content()调回最外层的页面。

转载于:https://www.cnblogs.com/Rita-LJ/p/11572798.html

你可能感兴趣的文章
展示图片的自动和手动切换
查看>>
机器学习分类
查看>>
kvm虚拟化关闭虚拟网卡virbr0的方法
查看>>
验证图片
查看>>
课后作业1
查看>>
深入HashMap
查看>>
JavaScript中模块化工具require.js
查看>>
Head First Java Stick 06
查看>>
echarts 坐标原点不是[0,0]缩放问题
查看>>
代码风格
查看>>
AssetBundle依赖关系
查看>>
hnu 10490
查看>>
Timus 1031
查看>>
ASP.NET-SOAP、UDDI知识点
查看>>
Java web 文件下载
查看>>
linux ssh搭建
查看>>
elasticsearch 7 安装
查看>>
Java实现打印功能
查看>>
Centos使用LVS+keepalive 搭建集群原理详解
查看>>
Objective-C 的三种 Callbacks 机制
查看>>