2.9 iframe

一、frame和iframe区别
Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架
Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入 的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame>< /Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内 容的代码。

二、案例操作:163登录界面
1.打开http://mail.163.com/登录页面

2.用firebug定位登录框

3.鼠标停留在左下角(定位到iframe位置)时,右上角整个登录框显示灰色,说明iframe区域是整个登录框区域

4.左下角箭头位置显示iframe属性<iframe id="x-URS-iframe" frameborder="0" name=""

三、切换iframe
1.由于登录按钮是在iframe上,所以第一步需要把定位器切换到iframe上
2.用switch_to_frame方法切换,此处有id属性,可以直接用id定位切换

四、如果iframe没有id怎么办?
1.这里iframe的切换是默认支持id和name的方法的,当然实际情况中会遇到没有id属性和name属性为空的情况,这时候就需要先定位iframe元素对象
2.定位元素还是之前的八种方法同样适用,这里我可以通过tag先定位到,也能达到同样效果

五、释放iframe
1.当iframe上的操作完后,想重新回到主页面上操作元素,这时候,就可以用switch_to_default_content()方法返回到主页面

六、如何判断元素是否在iframe上?
1.定位到元素后,切换到firepath界面
2.看firebug工具左上角,如果显示Top Window说明没有iframe
3.如果显示iframe#xxx这样的,说明在iframe上,#后面就是它的id

七、如何解决switch_to_frame上的横线呢?    
1.先找到官放的文档介绍

2.python的脚本上面划一横线,是说这个语法已经过时了(也可以继续用,只是有部分人有强迫症)。上面文档介绍说官方已经不推荐上面的写法了,用这个写法就好了driver.switch_to.frame()

八、参考代码如下:

#coding:utf-8
from selenium importwebdriver
driver =webdriver.Firefox() driver.get("http://mail.163.com/") driver.implicitly_wait(30) #切换iframe#iframe = driver.find_element_by_tag_name("iframe")#driver.switch_to_frame(iframe)#driver.switch_to_frame("x-URS-iframe") driver.switch_to.frame("x-URS-iframe") driver.find_element_by_name("email").send_keys("123") driver.find_element_by_name("password").send_keys("456") #释放iframe,重新回到主页面上 driver.switch_to.default_content()

转载于:https://www.cnblogs.com/lunvo/p/9183026.html

2.9 iframe相关推荐

  1. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  2. FRAME与IFRAME

    FRAME与IFRAME 框架概念 : 所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 转载于:https://www.cnblogs.com/vibratea/archive/200 ...

  3. 用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值

    Window postMessage() 方法 定义和用法 postMessage() 方法用于安全地实现跨源通信. 语法 otherWindow.postMessage(message, targe ...

  4. iframe几种常用代码片段

    <iframeid="SGframe"src="外部文件名.html"frameborder="no"scrolling=" ...

  5. ASP.NET小收集:IFrame使用

    使用Iframe制作一个固定框架,很方便与象后台网站之类的页面 1<htmlxmlns="http://www.w3.org/1999/xhtml">2<head ...

  6. iframe自动调整高度能在IE5里实现吗

    偶已经理解到style="height:expression(main.document.body.scrollHeight)"只对第一次显示的内嵌网页有效,如果里面的内容更新必须 ...

  7. 如何实现iframe(嵌入式帧)的自适应高度

    好几次看到有人提问问到如何实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象,刚好我在工作中也碰到了类似问题,于是上网翻查,东抄抄西看看,弄 ...

  8. “画中画”效果--谈IFRAME标签的使用

    作者:秋实    文章来源:天极网页陶吧 纵观时下网站,本来网速就有些慢,可是几乎每页都要放什么Banner,栏目图片,版权等一大堆雷同的东西,当然,出于网站风格统一.广告效应的需要,本无可厚非,可毕 ...

  9. Iframe 用法浅析

    解释成"浏览器中的浏览器"很是恰当 <iframe frameborder=0 width=170 height=100 marginheight=0 marginwidth ...

  10. ajax iframe实现文件上传,iframe实现Ajax文件上传效果示例

    avascript部分 ajax 文件上传~~ window.οnlοad=function(){ var form=document.getElementsByTagName('form')[0]; ...

最新文章

  1. vue 函数 路由跳转_vue中通过路由跳转的三种方式
  2. python的yield和yield from
  3. XGBoost的参数说明
  4. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)
  5. 146. LRU Cache
  6. parameter localparam define的区别
  7. CentOS7 reset脚本,用于初始化新的虚拟机
  8. 位图像素的颜色 携程编程大赛hdu
  9. Mac中Python版本随意切换终极指南,简单到爆,什么都不用设置
  10. 那些真正有用的经验,都是和高手过招换来的
  11. day08-----------面向对象(传智视频)
  12. Xcode 清除最近使用纪录
  13. Exchange2003/2010共存模式环境迁移
  14. C# 设置Windows程序窗口为穿透状态
  15. python中threading模块_举例详解Python中threading模块的几个常用方法
  16. 番茄花园GHOST SP3无法安装IIS 信息服务的解决方法
  17. 怎样将OFD转成PDF并保留电子签章
  18. 卫星遥感影像查询网址
  19. Corrupted STDOUT by directly writing to native stream in forked JVM 1. See FAQ web page and the dump
  20. 不恰当使用线程池处理 MQ 消息引起的故障

热门文章

  1. 微软认知服务开发实践(1) - 牛津计划简介
  2. MVC教程第一篇:准备工作
  3. ashx文件的几种使用
  4. .NET方法演化史 从Delegate到Lambda再到LINQ
  5. pytorch中获取指定位置元素
  6. [机器学习-回归算法]Sklearn之线性回归实战
  7. flask执行python脚本_如何从Flask应用程序执行Shell脚本
  8. 网络爬虫中X-CSRF-Token和Status 403问题解决方案(Java或Python)
  9. Namomo Spring Camp Div2 Week1 - 第三次打卡
  10. 扩展欧几里得exgcd算法 acm寒假集训日记22/1/12