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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
Python多线程编程(八):使用Event实现线程间通信
Apr 05 Python
Python贪吃蛇游戏编写代码
Oct 26 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
django query模块
Apr 20 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
python基于opencv检测程序运行效率
Dec 28 Python
Python如何对齐字符串
Jul 30 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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基于base64解码图片与加密图片还原实例
2014/11/03 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
php实现微信支付之企业付款
2018/05/30 PHP
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
怎么清空javascript数组
2013/05/11 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
详解Python中的文本处理
2015/04/11 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
python扫描线填充算法详解
2020/02/19 Python
python开发前景如何
2020/06/11 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
结婚保证书(三从四德)
2015/02/26 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
同学聚会感言一句话
2015/07/30 职场文书