selenium自动化之切换iframe
许多人在执行脚本的时候会发现,明明自己的元素路径没写错啊!怎么还是报元素未找到的异常呢?是的,没错,你可能是遇上iframe啦!下面将介绍关于iframe的相关操作。
例子:以163邮箱登录页面为例

如果你直接去定位账号输入框元素的话是定位不成功的,看到上图标红处的箭头没,原来这个元素在iframe框架里面,要想定位这个元素,必须先切换到这个iframe内才行。我们先找到iframe这层。如下图:

代码:
from selenium import webdriver # 导入webdriverimport timedriver = webdriver.Chrome()driver.get('https://mail.163.com/')time.sleep(1)iframe = driver.find_element_by_xpath('//div[@id="loginDiv"]/iframe') # 定位iframedriver.switch_to.frame(iframe) # 切换iframe框架里面a = driver.find_element_by_xpath('//input[@name="email"]') # 定位输入框元素a.send_keys('不知不觉多少好时光') # 输入文本print(a.get_attribute('value')) # 获取输入的value值driver.quit()
结果:

注意:
1.driver.switch_to.frame()为新方法,而driver.switch_to_frame()为老方法。
2.其实iframe的切换是默认支持id和name的方法的,也就是说假如iframe元素中有id和name属性(当然,要确保是唯一的,并且不是动态值),你可以直接使用driver.switch_to.frame('id')或者driver.switch_to.frame('name')进行切换,实际情况中会遇到没有id属性和name属性为空的情况,这时候就需要先定位iframe,把iframe当成一个元素来定位就行了
3.我这里由于iframe的id是动态值,且name为空,所以就把iframe当成一个元素来处理了
当我们切换了iframe之后,想要回到上一层框架,怎么办呢?webdriver也提供了不错的方法
1.driver.switch_to.parent_frame() # 回到上一层框架
2.driver.switch_to.default_content() # 一次性回到主框架(当切换了多层iframe之后,用这个太方便了)
selenium自动化之切换iframe的更多相关文章
- python UI自动化之切换iframe
python+selenium写UI自动化的时候,经常会遇到需要切换iframe的情况,这里介绍几种切换iframe的方式 1.使用id定位 driver.switch_to.frame(" ...
- 通过切换iframe来定位元素(用于Python+selenium自动化测试)
切换 iframe:1.由于登录按钮是在iframe上,所以第一步需要把定位器切换到iframe上2.用switch_to_frame方法切换,此处有id属性,可以直接用id定位切换 iframe 与 ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>
学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...
- Selenium自动化脚本开发总结
Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...
- python+selenium自动化软件测试(第2章):WebDriver API
2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...
- python+selenium自动化登录dnf11周年活动界面领取奖励登录部分采坑总结[1]
背景: Dnf的周年庆活动之一,游戏在6月22日 06:00~6月23日 06:00之间登陆过游戏后可以于6月25日 16:00~7月04日 06:00领取奖励 目标:连续四天自动运行脚本,自动领取所 ...
- Selenium自动化面试题
(1)selenium的工作原理? ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...
- Selenium自动化发送163邮箱
自动化发送163邮件 方法一: import time import datetime from selenium import webdriver from selenium.webdriver.s ...
- selenium webdriver窗口切换(上)
selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...
随机推荐
- 监听器中spring注入相关的问题
问题描述: 需求是要求在项目启动自动触发一个service中的线程的操作,使用监听器来实现,但是自定义监听器中spring注解service失败,通过WebApplicationContextUtil ...
- HDU 1829 A Bug's Life (种类并查集)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1829 A Bug's Life Time Limit: 15000/5000 MS (Java/Oth ...
- Android解析json数据
Json数据 [{"code":"110000","sheng":"11","di":"0 ...
- Cache Buffer 区别
Cache 一般位于CPU中, 分为 L1 Cache, L2 Cache, 是一种读的操作,把CPU刚用过的/循环使用的数据存储起来,当CPU再次使用时,可以直接从Cache存储器中调用,减少了等待 ...
- React Native获取组件位置和大小
RN页面中定位或滚动操作时,需要获取元素的大小和位置信息,有几种常用的方法 获取设备屏幕的宽高 import {Dimensions} from 'react-native'; var {height ...
- 一个百度MAP导航的基础封装
项目中需要根据点击时候点击的内容,输入百度地图查找并展示规划等相关功能 于是封装了一个单独的百度map的html页面以供调用 功能包括了 ①展示底图 ②切换卫星图,切换卫星路线图,切换普通地图 ③通过 ...
- jQuery实现全选、不选和反选功能
jQuery结合Font Awesome字体图标实现全选.不选和反选功能 Font Awesome字体图标链接地址:http://www.fontawesome.com.cn/faicons/ 效果: ...
- 浅淡 RxJS WebSocket
const open$ = new Subject(); const ws = webSocket({ url: 'wss://echo.websocket.org', openObserver: o ...
- MyEclipse部署项目时点finish点不动finish按钮灰色的
在MyEclipse中项目的propertes中输入tomcat搜索,jdk选择你本机安装的jdk
- MongoDB DBA 实践7-----MongoDB的分片集群操
一.使用Ranged Sharding对集合进行分片 从mongo连接到的shell中mongos,使用该sh.shardCollection()方法对集合进行分片. 注意: 必须已为集合所在的数据库 ...