Selenium 多表单(frame/iframe)切换

frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素

比如下面这个网页,有多个frame,以及嵌套iframe,我们在操作里面元素时,需要切换进去。

登陆后,我们要切换进leftFrame进行操作

代码:

# coding = utf-8
from selenium import webdriver
# 驱动文件路径
driverfile_path = r‘D:\coship\Test_Framework\drivers\IEDriverServer.exe‘
# 启动浏览器
driver = webdriver.Ie(executable_path=driverfile_path)
# 打开网页
driver.get(r‘http://172.21.13.83:28080/‘)
# 登录
driver.find_element_by_css_selector("[name=‘admin.loginName‘]").send_keys("autotest")
driver.find_element_by_css_selector("[name=‘admin.password‘]").send_keys("111111")
driver.find_element_by_css_selector("input#imageField").click()
# 进入leftFrame
driver.switch_to.frame("leftFrame")
# 点击链接
driver.find_element_by_css_selector("a[title=‘媒资编辑‘]").click()
# 退出
driver.quit()

switch_to.frame()默认可以直接使用表单(frame/iframe)的id或name属性。如果表单没有id和name属性,可以使用元素定位方法先找到这个表单,再切换进去

# 先定位到leftFrame
leftframe = driver.find_element_by_css_selector("frameset#switchFrame>frame")
# 切换进leftFrame
driver.switch_to.frame(leftframe)

假如在leftFrame中操作完成后,我们还需要进入mainFrame操作元素。这就就要先退出leftFrame,回到主页,再进入mainFrame

# 进入leftFrame
driver.switch_to.frame("leftFrame")
# 点击链接
driver.find_element_by_css_selector("a[title=‘媒资编辑‘]").click()
# 跳出leftFrame,回到主页
driver.switch_to.default_content()
# 进入mainFrame
driver.switch_to.frame("mainFrame")
# 点击导入
driver.find_element_by_link_text("导入").click()

switch_to.default_content()是跳回最外层页面。

如果进入了多层frame,我们只是想回到上一个frame,可以用

driver.switch_to.parent_frame()

原文地址:https://www.cnblogs.com/eastonliu/p/9105142.html

时间: 2024-10-16 08:26:16

Selenium 多表单(frame/iframe)切换的相关文章

Python+Selenium学习笔记8 - 多表单&多窗口切换

1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 # coding = utf-8 2 3 from selenium import webdriver 4 import os 5 import time 6 7 dr = webdriver.Firefox() 8 file_path = 'file:///' + os.path.abspath('frame.html') 9 dr.get(file_path) 10 11 # 切换到iframe(id="if"

HTML meta 文本 格式排版 链接图表 列表 表单 frame后台布局实例

meta标签 content属性必须和http-equiv或者name属性一起使用 http-equiv属性,就是http当量,用于和服务器发送数据前的提交交互使用.(另层含义这个当量在浏览器和服务器同价值,就是当量,采用的http协议) 服务器代码response.ContentType=“text/html”,先和浏览器提前交互. <meta></meta>对搜索引擎和更新频度的描述和关键词  charset只是content的属性一个内容,用:分开. 比如<meta c

selenium获取元素内容,iframe切换,和常用方法

获取元素信息 1. text 属性,显示该元素在web页面显示出来的文本内容 2. get_attribute方法 获取某个属性的值: element.get_attribute(元素属性) element.get_attribute('href') element.get_attribute('style') 获取该元素对应HTML源代码: element.get_attribute('outerHTML') 获取该元素的内部部分的HTML源代码: element.get_attribute(

Dynamics CRM 2015Online Update1 new feature之表单页Tabs切换

CRM2011的界面相对于CRM4.0进行了比较大的改动,N久没见过4.0的界面了所以忘了表单是什么样子的了,但2011的表单中若含有多个tab的话,是可以通过左侧栏进行切换,话说2013的界面相对2011又一次大改后表单页面的这个功能却没了,我们只能在表单窗体编辑器中能看到,说实话tab的切换用到的机会不多,但是一旦页面字段很多,分了多个section多个tab,那tab的切换没了的话就需要拖动滚动条还是有那么些不方便的. 庆幸的是这个功能在2015Online Update1中回来了,红框中

form表单,submit切换提交

有时候会遇到用form表单提交数据的情况,还有再同一表单下提交两种信息,就比如说,四个input,都在一个表单里,submit有两个,一个是登陆,一个是注册,这时候我们就需要去验证,我点的是什么要往注册还是登陆里提交.表单代码如下. <form action="login.do" name="form1" > <div class="login-hidd"></div> <div class="

表单和iframe的使用

图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果.示例: 网页划区: 在一个网页里,规划出一个区域用来展示另一个网页的内容.示例: 网页的拼接: 在一个网络页面内,规划出多个页面窗口,以表格拼接的形式展示出来. 示例: 表单: <form id="" name="" method="post/get" action="负责处理的服务端"> id不可重复,name可重复,get

form表单利用iframe高仿ajax

html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>若水注册登录</title> </head> <body> <div id="regres"></div> <form action="02-reg.php&q

javaScript表单焦点自动切换

---恢复内容开始--- <html> <head> <script> window.onload=function(){ var form=document.getElementsByTagName('form')[0]; var txt=form.elements['txt1']; var txt1=form.elements['txt2']; txt.onkeyup=function(){ if(this.value.length==this.maxLength)

Selenium 3----定位一组元素+多表单切换+多窗口切换

定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_partia