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 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python中创建字典的几种方法总结(推荐)
Apr 27 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python的logging模块基本用法
Dec 24 Python
Python爬虫定时计划任务的几种常见方法(推荐)
Jan 15 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 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
介绍几个array库的新函数 php
2006/12/29 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python实现子类调用父类的方法
2014/11/10 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
如何卸载python插件
2020/07/08 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
小松树教学反思
2014/02/11 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
市场部岗位职责
2015/02/12 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers