Selenium2+python自动化-iframe

前言

  本篇详细讲解iframe的相关切换操作。

一、frame和iframe区别

  Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架。

  Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入 的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame>< /Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内 容的代码。

二、介绍iframe属性

1.打开:https://email.163.com

2.用firebug定位登录框

3.鼠标停留在左下角(定位到iframe位置)时,右上角整个登录框显示灰色,说明iframe区域是整个登录框区域

4.下图显示具体iframe属性,阴影部分都是iframe框架区域,阴影中的页面元素都属于该iframe上的元素:

  

三、切换iframe(ID)

 1.由于登录按钮是在iframe上,所以第一步需要把定位器切换到iframe上;

2.用switch_to.frame方法切换,此方法默认用(ID / Tag)属性(唯一)定位,可以直接用id定位切换;

from selenium import webdriver
driver = webdriver.Firefox()     # 启动浏览器
driver.get("https://email.163.com")  # 请求地址
‘‘‘ 第一种方式: ID定位 ‘‘‘
driver.switch_to.frame("ID")  # 此方法默认使用ID属性查找元素,ID必须唯一,否则找不到元素

四、切换iframe(Tag)

  1.先定位标签(iframe)元素,并赋值一个对象;

  2.用switch_to.frame方法切换;

frame = driver.find_element_by_tag_name(‘iframe‘)  # 定位iframe标签
driver.switch_to.frame(frame)    # 切换iframe

‘‘‘  如果标签有多个情况,可以用复数方式定位在取下标  ‘‘‘
frames = driver.find_elements_by_tag_name(‘iframe‘)  # 定位iframe标签
driver.switch_to.frame(frames)    # 切换iframe

五、切换iframe(其它)

  1.可以通过页面中iframe索引进行定位,页面索引从0开始计数;

  2.switch_to.frame方法中传入索引值;

‘‘‘  通过页面iframe索引数(index从0开始)进行定位  ‘‘‘
driver.switch_to.frame(1)   # 切方iframe,索引(1)表示定位标签的位置
driver.find_element_by_name("email").send_keys("123456")    # 输入账号
driver.find_element_by_name("password").send_keys("123456")  # 输入密码

六、退出iframe框架(Top window)

1.当iframe上的操作完后,想重新回到主页面上操作元素,这时候,就可以用switch_to_default_content()方法返回到主页面;

driver.switch_to.frame(1)   # 切方iframe,索引(1)表示定位标签的位置
driver.find_element_by_name("email").send_keys("123456")    # 输入账号
driver.find_element_by_name("password").send_keys("123456")  # 输入密码
‘‘‘  退出iframe框架  ‘‘‘
driver.switch_to.default_content()     # 返回Top window

原文地址:https://www.cnblogs.com/hoyun/p/10457361.html

时间: 2024-10-11 06:22:35

Selenium2+python自动化-iframe的相关文章

Selenium2+python自动化24-js处理富文本(带iframe)【转载】

前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的问题 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了避免透露个人账户信息,我直接加载配置文件,免登录了. 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 二.打开编辑界面 1.博客首页地址:bolgurl = "http://www.cn

Selenium2+python自动化24-js处理富文本(带iframe)

前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的问题 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了避免透露个人账户信息,我直接加载配置文件,免登录了. 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 二.打开编辑界面 1.博客首页地址:bolgurl = "http://www.cn

Selenium2+python自动化33-文件上传(send_keys)

前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方库. 本篇以博客园的上传图片为案例,通过send_keys()方法解决文件上传问题 一.识别上传按钮 1.点开博客园编辑器里的图片上传按钮,弹出”上传本地图片”框. 2.用firebug查看按钮属性,这种上传图片按钮

Selenium2+python自动化23-富文本(自动发帖)【转载】

前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了避免透露个人账户信息,我直接加载配置文件,免登录了. 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 二.打开编辑界面 1.博客首页地址:bolgurl = "http://www.cnblogs.com/" 2.我的博客园地址:yoyob

Selenium2+python自动化23-富文本(自动发帖)

前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了避免透露个人账户信息,我直接加载配置文件,免登录了. 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 二.打开编辑界面 1.博客首页地址:bolgurl = "http://www.cnblogs.com/" 2.我的博客园地址:yoyob

Selenium2+python自动化28-table定位

前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table 2.源码如下:(用txt文本保存,后缀改成html) <!DOCTYPE html><meta charset="UTF-8"> <!-- for HTML5 --><meta http-equiv="Content-Type"

Selenium2+python自动化59-数据驱动(ddt)

前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成. 一.环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 >>pip install ddt 二.数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt.data() 4.运

Selenium2+python自动化39-关于面试的题

前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点. 一.selenium中如何判断元素是否存在? 首先selenium里面是没有这个方法的,判断元素存在需要自己写一个方法了. 元素存在有几种形式,一种是页面有多个元素属性重复的,这种直接操作会报错的:还有一种是页面隐藏的元素操作也会报错 判断方法参考这篇:Selenium2+python自动化36-判断元素存在 二.selenium中hidden或者是displa

Selenium2+python自动化47-判断弹出框存在(alert_is_present)

前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(expected_conditions)讲expected_conditions这个模块 一.判断alert源码分析 class alert_is_present(object):    """ Expect an alert to be present.""&q