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中的输入和输出功能进行读取和写入的教程
Apr 14 Python
python中redis的安装和使用
Dec 04 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Django框架获取form表单数据方式总结
Apr 22 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
python中的django是做什么的
Jul 31 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php生成WAP页面
2006/10/09 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php实现文件下载代码分享
2014/08/19 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
JAVA代码查错题
2014/10/10 面试题
应届大学生简历中的自我评价
2014/01/15 职场文书
个人简历自我评价
2014/02/02 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
政风行风建设整改方案
2014/10/27 职场文书
学校国庆节活动总结
2015/03/23 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
服装店员工管理制度
2015/08/07 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis