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实现在字符串中查找子字符串的方法
Jul 11 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
浅谈Python peewee 使用经验
Oct 20 Python
Flask之flask-script模块使用
Jul 26 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
Django choices下拉列表绑定实例
Mar 13 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
Python实现七个基本算法的实例代码
Oct 08 Python
详解pycharm自动import所需的库的操作方法
Nov 30 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
JS backgroundImage控制
2009/05/19 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
python实现的重启关机程序实例
2014/08/21 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
python assert的用处示例详解
2019/04/01 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
介绍一下gcc特性
2012/01/20 面试题
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
教师读书活动心得体会
2016/01/14 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android