一、frame和iframe区别

Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架

Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入 的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame>< /Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内 容的代码。

二、163登录界面

1.打开http://mail.163.com/登录页面10

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先定位到,也能达到同样效果

QQ交流群:232607095

(版权所有:"yoyoketang"微信公众号)

 

五、释放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.官方已经不推荐上面的写法了,用这个写法就好了driver.switch_to.frame()

八、参考代码如下

# coding:utf-8

from selenium import webdriver

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()

最新文章

  1. 模拟时钟(AnalogClock)和数字时钟(DigitalClock)
  2. 设置type为file的input标签选择图片类型
  3. mys.cnf-性能优化
  4. tiff或tif文件的读取
  5. Android基础环境搭建
  6. Tengine笔记2:通过IP、域名、端口实现虚拟主机
  7. 2.cocos2dx 3.2在语法的差异,lambada使用表达式和function和bind使用功能
  8. javascript中event汇总
  9. C# 语言规范_版本5.0 (第17章 特性)
  10. 关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。
  11. ruby错误
  12. Personal Learning Path of Java——初识Java
  13. opencv利用hough概率变换拟合得到直线后,利用DDA算法得到直线上的像素点坐标
  14. java:合并两个排序的链表(递归+非递归)
  15. PRTG测试!
  16. webpack 解决 semantic ui 中 google fonts 引用的问题
  17. Vue-cli 模拟数据库
  18. Python脱产8期 Day04 2019/4/16
  19. vue实现筛选功能,文字选中变色
  20. ARC设置

热门文章

  1. Luogu P2170选学霸【并查集+背包】By cellur925
  2. Ubuntu还是windows呢
  3. HDU - 6066 RXD's date
  4. Android课程设计第四天ListView运用
  5. servlet生命周期:
  6. rhel7使用centos7yum组件
  7. laravel 权限管理 常用命令
  8. C++模板类头文件和实现文件分离
  9. laravel权限控制Gate
  10. 安装scount的es驱动,composer require tamayo/laravel-scout-elastic报错解决