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执行子进程实现进程间通信的方法
Jun 02 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
Python中类的初始化特殊方法
Dec 01 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
python调用c++返回带成员指针的类指针实例
Dec 12 Python
python中数据库like模糊查询方式
Mar 02 Python
django中嵌套的try-except实例
May 21 Python
Python ConfigParser模块的使用示例
Oct 12 Python
Python os库常用操作代码汇总
Nov 03 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 array_filter除去数组中的空字符元素
2020/06/21 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
基于php编程规范(详解)
2017/08/17 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python中有趣在__call__函数
2015/06/21 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
旷课检讨书1000字
2014/02/14 职场文书
优秀党员获奖感言
2014/02/18 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
教师节倡议书
2014/08/30 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
世界名著读书笔记
2015/06/25 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
mysql脏页是什么
2021/07/26 MySQL
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers