如何查看是否为iframe

*使用FireFox组件firebug->firepath

1.Top Window:可直接定位

2.iframe#i:根据id定位

定位方法:

switch_to.frame(name or id or frame_element)

针对有id或name的情况

代码:

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://mail.126.com/")
time.sleep(1)
#切换到iframe中,参数是它的id"x-URS-iframe"
driver.switch_to.frame("x-URS-iframe")
driver.find_element_by_name("email").send_keys("abc")
driver.find_element_by_name("password").send_keys("123")
driver.find_element_by_id("dologin").click()
time.sleep(1)
driver.quit()

3.iframe:id 或name为空

定位方法:

switch_to.frame(frame element)

代码:

#coding:utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://mail.126.com/")
time.sleep(1)
#iframe既没有id也没有name,把iframe当成元素对象,先定位iframe这个元素
iframe_element=driver.find_element_by_xpath('//iframe[@id='x-URS-iframe']')
driver.switch_to.frame(iframe_element)
driver.find_element_by_name("email").send_keys("abc")
driver.find_element_by_name("password").send_keys("123")
driver.find_element_by_id("dologin").click()
time.sleep(1)
driver.quit()

4.直接为空(两层iframe)

 如果元素都为空,找不到,可以通过页面上iframe的索引进行定位

定位方法:

driver.switch_to.frame(0)  #用frame的index进行定位,从0开始

*top window不算进去

代码:

#coding:utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://mail.126.com/")
time.sleep(1)
#什么也没有,就通过索引,取下标,从0开始计数
driver.switch_to.frame(3)
driver.find_element_by_name("email").send_keys("abc")
driver.find_element_by_name("password").send_keys("123")
driver.find_element_by_id("dologin").click()
time.sleep(1)
driver.quit()

二.多个iframe切换

一个页面上嵌套f1,f1里面又嵌套f2,这种情况又如何切换?

问题:

如何切换到f2?

分析:

想要切换到f2,首先要从top windows中先切换到f1,再从f1切换至f2(举例:想进入房间,需要先打开门,进入客厅,再从客厅进入房间同理)

方法:

#从Top Window切换到框架f1

driver.switch_to.frame('f1')

#从框架f1切换到框架f2

driver.switch_to.frame('f2')

#再从框架f2返回至框架f1(返回上一级的意思)

driver.switch_to.parent_frame()

#跳出所有iframe,返回主界面

driver.switch_to_default_content()

最新文章

  1. Jquery知识点梳理
  2. Sql Server数据库备份和恢复:原理篇
  3. 【JWPlayer】官方JWPlayer去水印步骤
  4. window下使用vnc远程登录阿里云ECS/ubuntu图形界面
  5. Jquery判断滚动条是否到达窗口顶部和底部
  6. Segment fault及LINUX core dump详解 (zz)
  7. $(document).ready()与 window.onload执行时机
  8. MediaRecorder类介绍
  9. 【转】Open Live Writer 插件更新
  10. java命名规范和编程技巧
  11. Nested Class Templates
  12. Eclipse连接sql server 2012数据库编程一条龙
  13. Visual Studio 中的单元测试 UNIT TEST
  14. html的标签分类————可以上传的数据篇
  15. python之类和对象
  16. 微信、陌陌等著名IM软件设计架构详解(转)
  17. 背水一战 Windows 10 (52) - 控件(集合类): ItemsControl - 自定义 ItemsControl, 自定义 ContentPresenter
  18. Java设计模式学习记录-简单工厂模式、工厂方法模式
  19. js经典应用
  20. “服务器推”技术【转载+整理】

热门文章

  1. cs-SelectTree-DropTreeNode, SelectTreeList
  2. HAWQ技术解析(十八) —— 问题排查
  3. ubuntu i3 xterm中文输入显示问题解决
  4. Python3环境安装Scrapy爬虫框架过程及常见错误
  5. Oracle Database Link 的创建和使用小见
  6. Docker与PAAS
  7. Oracle Database 11.2.0.4.0 已在 中标麒麟Linux x86-64 NeoKylin Linux Advanced Server 6 上通过认证
  8. Oracle 存储过程调用返回游标的另一个存储过程。
  9. 通过浏览器查看nginx服务器状态配置方法
  10. 神奇的canvas——点与线绘制的绚丽动画效果