iframe详解
2024-09-28 05:44:05
如何查看是否为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()
最新文章
- Jquery知识点梳理
- Sql Server数据库备份和恢复:原理篇
- 【JWPlayer】官方JWPlayer去水印步骤
- window下使用vnc远程登录阿里云ECS/ubuntu图形界面
- Jquery判断滚动条是否到达窗口顶部和底部
- Segment fault及LINUX core dump详解 (zz)
- $(document).ready()与 window.onload执行时机
- MediaRecorder类介绍
- 【转】Open Live Writer 插件更新
- java命名规范和编程技巧
- Nested Class Templates
- Eclipse连接sql server 2012数据库编程一条龙
- Visual Studio 中的单元测试 UNIT TEST
- html的标签分类————可以上传的数据篇
- python之类和对象
- 微信、陌陌等著名IM软件设计架构详解(转)
- 背水一战 Windows 10 (52) - 控件(集合类): ItemsControl - 自定义 ItemsControl, 自定义 ContentPresenter
- Java设计模式学习记录-简单工厂模式、工厂方法模式
- js经典应用
- “服务器推”技术【转载+整理】
热门文章
- cs-SelectTree-DropTreeNode, SelectTreeList
- HAWQ技术解析(十八) —— 问题排查
- ubuntu i3 xterm中文输入显示问题解决
- Python3环境安装Scrapy爬虫框架过程及常见错误
- Oracle Database Link 的创建和使用小见
- Docker与PAAS
- Oracle Database 11.2.0.4.0 已在 中标麒麟Linux x86-64 NeoKylin Linux Advanced Server 6 上通过认证
- Oracle 存储过程调用返回游标的另一个存储过程。
- 通过浏览器查看nginx服务器状态配置方法
- 神奇的canvas——点与线绘制的绚丽动画效果