selenium-iframe操作
iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示。
最典型的案例就是163邮箱登录:http://mail.163.com/,被绿色覆盖的部分即为iframe。
对iframe进行操作,需要用到一下种方法:
- switch_to_iframe() 切换到iframe上
- switch_to.frame() 切换到iframe上
- switch_to.default_content() 切换回原主页面
1.确定要操作的元素是否在iframe上。
firebug给我们提供了一个很简易的操作。
以“网易邮箱登录为例”,打开网页http://mail.163.com/,启动firebug
随便选中一个元素,若左上角显示的是TopWindow,则该元素不在iframe上,如“邮箱账号登录”
若左上角现实的是iframe#XXX,则该元素在iframe上,操作该元素需要先切换到该iframe上,XXX为这个iframe的id。
2.切换
#定位到iframe
iframe=driver.find_element_by_id("x-URS-iframe")
#切换到iframe
driver.switch_to_frame(iframe)
切换之后,就可以对iframe上的元素进行操作。
#登录,自行填写账号密码
driver.find_element_by_css_selector("input[name='email']").send_keys("XXX")
driver.find_element_by_css_selector("input[name='password']").send_keys("XXX")
time.sleep(3)
driver.find_element_by_id("dologin").click()
如果不切换直接操作iframe上的元素,编译器会报错
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: input[name='email']
3.switch_to_iframe方法上的横线
当我们调用switch_to_iframe时,编译器会在方法上划一条线
说明,这个方法虽然能用,但是已经过时,不推荐用。查阅文档可以发现,有一种方法将其替换
4.返回主页面
我们切换到iframe上之后,就无法对iframe以外的元素进行操作,如果需要,我们需要退出iframe
#退出iframe
driver.switch_to.default_content()
附源码:
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("http://mail.163.com/")
time.sleep(3) #定位到iframe
iframe=driver.find_element_by_id("x-URS-iframe")
#切换到iframe
driver.switch_to.frame(iframe) #登录
driver.find_element_by_css_selector("input[name='email']").send_keys("xxx")
driver.find_element_by_css_selector("input[name='password']").send_keys("xxx")
time.sleep(3)
driver.find_element_by_id("dologin").click() #退出iframe
driver.switch_to.default_content()
源码
selenium-iframe操作的更多相关文章
- selenium自动化操作
在前面爬虫的相关介绍中,我们介绍了如何抓取静态页面信息.但是,在实际的网页浏览过程中,我们可能会经常碰到各种需要进行交互的操作,典型的如输入信息.点击按钮之类. 对于这种场景,之前的静态页面操作方式已 ...
- selenium怎么操作web页面常见的元素
总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio box ...
- selenium在操作隐藏元素时会报错,怎么判断元素是隐藏的?
首先页面元素隐藏有五种方法: 1. opacity: 0; opacity 属性的意思是设置一个元素的透明度.它不是为改变元素的边界框(bounding box)而设计的.这意味着将 opacity ...
- 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS
第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS PhantomJS虚拟浏览器 phantomjs 是一个基于js的webkit内核无头浏览器 ...
- javascript iframe 操作(一)
[兼容所有浏览器 包括IE7/8/9] 1.父页面中获取IFRAME的WINDOW对象 获得了window对象后,就可以调用iframe页面中定义的方法等. IE:可以通过iframeId.windo ...
- selenium iframe 定位 qq空间说说
selenium iframe 定位 qq空间说说
- python selenium 相关操作
selenium : 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fi ...
- selenium如何操作页面树状列表
selenium如何操作页面树状列表??举个例子:我要怎么操作如下图所示的树状结构列表?我要对这个树状结构列表做什么操作? 一.思路 1.根据driver.find_element_by_xpath( ...
- Selenium常用操作汇总二——iframe的处理
有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题.这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一.如果你在一 ...
- Selenium+python操作id为动态变化的frame(iframe)
先定位到一组frame:ele = dr.find_elements_by_tag_name('iframe')此时获得一组frame 再通过index取需要切进去的frame并取到该frame的id ...
随机推荐
- 简单又炫酷的two.js 二维动画教程
前 言 S N 今天呢给大家介绍一个小js框架,Two.JS.其实在自己学习的过程中并没有找到合适的教程,所以我这种学习延迟的同学是有一定难度的,然后准备给大家整理一份,简单易懂的小教程 ...
- jquery系列教程6-ajax的应用全解
点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...
- java之基础数据类型学习————(一)
JAVA数据类型: 总结来说,java的基本数据类型分为 四类八种 • 第一类:整数类型:byte.short.int.long • 第二类:浮点型:float.double • 第三类:字符类型:c ...
- IDEA Maven 三层架构 1、基本的Archetype 搭建
JDK:1.8 Maven:3.3.9 三层架构:基于 SpringMVC 的 UI 层.业务逻辑层以及数据访问层 从对 Maven 的了解可以看出,三层架构的创建在于对文件夹的合理安排,他们通常是主 ...
- ajax请求service报405错误 - 【服务器不允许的方法】
产生原因:web服务器找不到service方法处理请求. 检查方向: ① service方法名称写错 ② service方法参数类型与标准不一致 ③ service方法异常,返回值类型和标准不一致 ④ ...
- python 中的enumerate()函数的用法
enumerate函数说明: 函数语法:enumerate(可遍历的对象,索引号开始的值).enumerate(sequence, [start=0]) 功能:将可循环序列sequence以start ...
- eclipse远程调试Linux环境下的web项目
前提: 远程服务器上的代码和本地的代码同步 第一步 : 配置远程服务器下的startup.sh文件 在第一行添加 : declare -x CATALINA_OPTS="-server -X ...
- MySql技术内幕之MySQL入门(2)
MySql技术内幕之MySQL入门(2) 接上一篇. mysql> source create_member.sql; # 创建member表 Query OK, 0 rows affected ...
- Linux下如何高效删除一个几十G的文本文件的最后一行或几行
当我们在服务器端记录日志或文本数据时,有时候会有需要删除一个大文件的最后几行,这时如何才能高效实现. 上网浏览终于找到dd命令,亲测如下,删除一个32GB的日志文件最后100行仅需要4分钟 [root ...
- python 文件相关知识
字符编码相关 什么是字符编码 字符编码的类型 字符编码的使用 python2和python里字符编码的区别 文件的相关 文件的基础操作 打开文件的模式 字符编码 什么是字符编码在计算机里只识别二进制, ...