Python爬虫之Selenium中frame/iframe表单嵌套页面


Posted in Python onDecember 04, 2020

在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。

本章中用到的关键方法如下:

  • switch_to.frame():切换为frame/iframe表单的内嵌页面中
  • switch_to.parent_frame():退出内嵌页面

以ip138网站为例

Python爬虫之Selenium中frame/iframe表单嵌套页面

from selenium import webdriver

driver = webdriver.Chrome()

# 打开ip138网站
driver.get("http://www.ip138.com/")

# 定位到内嵌网页(iframe),并进入表单
xf = driver.find_element_by_xpath('/html/body/div/div[3]/iframe')
driver.switch_to.frame(xf)
#driver.switch_to.frame(name or id) #默认直接取表单的id 或name属性,如果都没有则通过上边的定位方式
print(driver.find_element_by_xpath('/html/body/p[1]').text)

# 退出内嵌网页(iframe),如果想操作外层的页面,不退出是会报错的
driver.switch_to.default_content()
print(driver.find_element_by_xpath('/html/body/div/div[3]/h3').text)

driver.quit()

Selenium文集传送门:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

到此这篇关于Python爬虫之Selenium中frame/iframe表单嵌套页面的文章就介绍到这了,更多相关Selenium frame/iframe表单嵌套内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 正则表达式操作指南
May 04 Python
Python专用方法与迭代机制实例分析
Sep 15 Python
讲解Python中的标识运算符
May 14 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
python解释器安装教程的方法步骤
Jul 02 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 #Python
Python爬虫之Selenium实现键盘事件
Dec 04 #Python
python 爬虫请求模块requests详解
Dec 04 #Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 #Python
Selenium 配置启动项参数的方法
Dec 04 #Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 #Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 #Python
You might like
用PHP实现文件上传二法
2006/10/09 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
python与C互相调用的方法详解
2017/07/14 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
pandas.cut具体使用总结
2019/06/24 Python
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
Java中实现多态的机制
2015/08/09 面试题
有关打架的检讨书
2014/01/25 职场文书
委托书范本
2014/04/02 职场文书
初中学校军训方案
2014/05/09 职场文书
初中教师业务学习材料
2014/05/12 职场文书
九一八事变演讲稿
2014/09/05 职场文书
春节慰问简报
2015/07/21 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL
python中validators库的使用方法详解
2022/09/23 Python