selenium+python自动化之iframe
我们以163邮箱登录界面为例,简单讲解下如何定位iframe中元素
一开始直接定位界面上元素,我们会发现无法定位到,为什么呢,我们可以通过查看页面元素发现页面中嵌入的有iframe,需要先定位到iframe才能定位到iframe里面的元素
步骤1:打开163邮箱首页,右键查看页面元素,我们可以看到用户名和密码输入框被iframe包含着
步骤2:我们要登录邮箱,但输入框在iframe里面,需要先定位到iframe上才能定位iframe里面的元素
在定位iframe时发现id是动态的且没有name和class属性
可以用find_element_by_xpath()进行定位,或用find_element_by_tag_name(“iframe”)定位
步骤3:操作完iframe上的元素,想要回到主页面操作元素,就需要释放iframe回到首页,我们可以通过switch_to_default_content()方法
步骤4:登录后如何判断登录成功了呢,需要我们定位下登录成功界面的元素来进行判断
如:登录成功后,我们可以看到左上角会显示用户名,那么接下来我们就获取用户名元素,且对该元素的内容进行判断
步骤5:如何判断元素是否在iframe上
需要通过Firefox的FirePath查看(注:因为我的firefox浏览器版本太高,无法安装firepath插件,建议用firefox46以下版本)
1.定位到元素后,切换到firepath界面
2.看firebug工具左上角,如果显示Top Window说明没有iframe
3.如果显示iframe#xxx这样的,说明在iframe上,#后面就是它的id
以下是个人整理的163邮箱登录>断言>退出,整体流程,此处单独做了方法的封装
selenium+python自动化之iframe的更多相关文章
- selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- selenium+python自动化登录脚本
利用selenium+python写的一个关于登录的自动化脚本
- 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)
Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...
- selenium+python自动化102-登录页面滑动解锁(ActionChains)
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...
- selenium+python自动化106 - 滑动 iframe 上的滚动条
前言 页面嵌套了iframe,这个iframe又是可以滚动的,如何操作iframe上的滚动条? 示例 写一个html页面案例,源码如下 <!DOCTYPE html> <html l ...
- selenium+python自动化78-autoit参数化与批量上传
前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片. 这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 ...
- selenium+python自动化77-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- selenium+python自动化78-autoit参数化与批量上传【转载】
转至博客:上海-悠悠 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片.这样每次调用的时候,在命令行里面加一个文件路径的参数就行 ...
随机推荐
- FreeSWITCH 1.10.7 编译(debian 11)
1.安装预备库 apt install -y build-essential gdb gnupg2 wget autoconf lsb-release libtool libtool-bin libt ...
- FFT通过傅里叶级数图解频域补零时域内插
在时域频域的信号分析的过程中,一个常见的说法叫:频域数据补零会让时域数据内插. 意思是在频域数据中多补几个零,再做ifft(逆傅里叶变换)后的时域数据,会变得更加"细腻",分辨率会 ...
- 深度学习快速参考 | iBooker·ApacheCN
原文:Deep Learning Quick Reference 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原则 ...
- [论文][半监督语义分割]Adversarial Learning for Semi-Supervised Semantic Segmentation
Adversarial Learning for Semi-Supervised Semantic Segmentation 论文原文 摘要 创新点:我们提出了一种使用对抗网络进行半监督语义分割的方法 ...
- js脚本获取键盘值
转载请注明来源:https://www.cnblogs.com/hookjc/ 一个测试键盘上各键对应的ASCII代码的页面 <html><head> <script&g ...
- Visual Studio 下error C2471: 无法更新程序数据库
转载请注明来源:https://www.cnblogs.com/hookjc/ 解决方案:修改项目属性 右击项目 --> "属性" 1. "C/C++" ...
- JQgrid实现全表单元格编辑
1 jQuery("#baseWageDataValueGrid").jqGrid('setGridParam',{'cellEdit':true}); 2 3 //修改所有td ...
- 基于Java的简单银行管理系统(MVC设计模式)
项目导航 功能展示 项目描述 项目结构 `data` `service` `utils` `view ` 欠缺与总结 源码下载 功能展示 本系统基于命令台窗口,暂未与图形页面结合.话不多说,先上效果图 ...
- 帆软报表(finereport) 组合地图 保持系列名和值居中
自定义JavaScript代码,使用HTML解析 function(){ var name = this.name; var total = '<div style="width:10 ...
- Java中Integer 和 int的区别
基本概念的区分: 1.Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2.Integer 变量必须实例化后才能使用,而int变量不需要 3.Integer 实际是对象 ...