什么是frame表单,如何切换frame表单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是frame表单,如何切换frame表单相关的知识,希望对你有一定的参考价值。
frame:html页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素; (HTML语言中,frame/iframe标签为表单框架)方法: 1). driver.switch_to.frame("myframe1") --> 切换表单方法 (myframe1:为frame表单的name或id) 2). driver.switch_to.default_content() --> 恢复默认页面方法 (在frame表单中操作其他页面,必须先回到默认页面,才能进一步操作)我在学习有关web自动化测试相关的知识的时候,都是看黑马程序员视频库的视频,他们讲的很好全面,相比看书的话我就很难看下去。另外的资料官网对话框就可以领取。要是自学的话可以去看看黑马社区,能找到一起自学的小伙伴 参考技术A 在JAVA中,frame是一种控件,可作为父窗体加载其他swing控件,有子类JFrame类,父类Window类。4.9 多表单切换
在 web 应用中经常会遇到 frame 嵌套页面的应用,页 WebDriver 每次只能在一个页面上识别元素,对
于 frame 嵌套内的页面上的元素,直接定位是定位是定位不到的。这个时候就需要通过 switch_to_frame()
方法将当前定位的主体切换了 frame 里。
1 <html> 2 <head> 3 <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.mi n.css" 4 rel="stylesheet" /> 5 <script type="text/javascript">$(document).ready(function(){ 6 }); 7 </script> 8 </head> 9 <body> 10 <div class="row-fluid"> 11 <div class="span10 well"> 12 <h3>frame</h3> 13 <iframe id="if" name="nf" src="http://www.baidu.com" width="800" 14 height="300"> 15 </iframe> 16 </div> 17 </div> 18 </body> 19 <script 20 src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script> 21 </html>
这个时候直接定位百度的输入框一定会报找不到元素的错误。那么可以使用 switch_to_frame()先找到
frame.html 中的<iframe>标签,然后再定位百度输入框。
1 #coding=utf-8 2 from selenium import webdriver 3 import time 4 import os 5 driver = webdriver.Firefox() 6 file_path = \'file:///\' + os.path.abspath(\'frame.html\') 7 driver.get(file_path) 8 #切换到 iframe(id = "if") 9 driver.switch_to_frame("if") 10 #下面就可以正常的操作元素了 11 driver.find_element_by_id("kw").send_keys("selenium") 12 driver.find_element_by_id("su").click() 13 time.sleep(3) 14 driver.quit()
switch_to_frame() 默认可以直接取表单的 id 或 name 属性进行切换。如
……
#id = "if"
driver.switch_to_frame("if")
#name = "nf"
driver.switch_to_frame("nf")
……
那么如果 iframe 没有可用的 id 和 name 可以通过下面的方式进行定位:
#先通过 xpth 定位到 iframe
xf = driver.find_element_by_xpath(\'//*[@class="if"]\')
#再将定位对象传给 switch_to_frame()方法
driver.switch_to_frame(xf)
……
driver.switch_to_default_content()
如果完成了在当前表单上的操作可以通过 switch_to_default_content()方法返回到上一层表单。该方法
不用指定某个表单的返回,默认对应与它最近的 switch_to_frame()方法。
还有一种方法能够从子frame切回到父frame,而不用我们切回主文档再切进来。
driver.switch_to.parent_frame()
以上是关于什么是frame表单,如何切换frame表单的主要内容,如果未能解决你的问题,请参考以下文章