频道栏目
首页 > 资讯 > 其他综合 > 正文

selenium多表单切换教程

18-07-25        来源:[db:作者]  
收藏   我要投稿

在 web 应用中经常会遇到 frame 嵌套页面的应用,页 WebDriver 每次只能在一个页面上识别元素,对于 frame 嵌套内的页面上的元素,直接定位是定位是定位不到的。这个时候就需要通过 switch_to_frame()方法将当前定位的主体切换了 frame 里。

在上面的 html 代码中通过 iframe 表单嵌入一个百度页面,通过浏览器打开如下图

这个时候直接定位百度的输入框一定会报找不到元素的错误。那么可以使用 switch_to_frame()先找到frame.html 中的<iframe>标签,然后再定位百度输入框。</p> <pre class="brush:java;"> <code>from selenium import webdriver import time import os driver = webdriver.Firefox() 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()</pre> <p>switch_to_frame() 默认可以直接取表单的 id 或 name 属性进行切换。如?</p> <p>?</p> <pre class="brush:java;"> <code>#id = "if" driver.switch_to_frame("if") #name = "nf" driver.switch_to_frame("nf") ……</pre> <p>那么如果 iframe 没有可用的 id 和 name 可以通过下面的方式进行定位:</p> <pre class="brush:java;"> <code>…… #先通过 xpth 定位到 iframe xf = driver.find_element_by_xpath('//*[@class="if"]') #再将定位对象传给 switch_to_frame()方法 driver.switch_to_frame(xf) …… driver.switch_to_default_content()</pre> <p>如果完成了在当前表单上的操作可以通过 switch_to_default_content()方法返回到上一层表单。该方法不用指定某个表单的返回,默认对应与它最近的 switch_to_frame()方法。?</p> <p>?</p> <p>?</p></iframe>

相关TAG标签
上一篇:xshell的常用命令总结分享
下一篇:Linux系统下python面向对象的属性和方法以及设计模式实例讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站