UI自动化之特殊处理一(iframe\句柄\鼠标键盘)
iframe\句柄\鼠标键盘是一些比较特殊的事件,需要特殊处理
目录
1、iframe
2、句柄(handle)
3、鼠标键盘
1、iframe
iframe 是内嵌的网页元素,也可以说是内嵌的框架,我们需要先切换到iframe上面,才能对元素进行操作,若需要再操作不在iframe上的元素需要切换topwindow
001、判断是否有iframe
至于在不在iframe上面,通过firepath看一下是不是topwindow,如果不是就是在iframe上面
iframe一般有2种,一种是有id,一种没有id
002、有id的通过id来定位
driver.switch_to_frame(“id属性值”)
003、无id的通过tag name定位,然后切换
m=driver.find_element_by_tag_name(“iframe”)
driver.switch_to_frame(m)
特别的,有多个无id的iframe,可通过索引来定位
m=driver.find_element_by_tag_name("iframe")[0]
switch_to.iframe(m)
004、操作完iframe上的元素后,需要操作不在iframe上的元素,需要切回topwindow,再操作
driver.switch_to_default_content()
特别的,有多个iframe,需要一层一层的定位进去;需要切换回上一个iframe,可以用
driver.switch_to.parent_frame()
注:switch_to_frame()上面会有横线,可以写成driver.switch_to.frame(),就没问题了
2、句柄(handle)
再调试的时候,如果点开的是一个链接,则可以手动拖动下,看他是否会重新打开一个窗口,如果会,则他就是另一个句柄了。浏览器窗口的属性,用句柄来识别
001、打印当前句柄
m=driver.current_window_handle
print m
002、获取所有句柄
m=driver.window_handles
print m
'''获取第二个句柄’‘’
print m[1]
003、如果不等于当前句柄就切换
h = driver.current_window_handle
all_h = driver.window_handles
for i in all_h:
if i!=h;
driver.switch_to.window(i)
driver.switch_to.window(h) #切换回首页
3、鼠标键盘
001、键盘事件
一般在浏览器中会有一个输入完就回车的动作submit()
driver.find_element_by_name("password").sendkeys()
driver.find_element_by_name("password").submit()
如果submit()提交不了的话,可以导入键盘事件模块
导入:
from selenium.webdriver.common.keys import Keys
键盘操作有单个输入和组合输入
单个输入
如enter:send_keys(keys,ENTER)
制表键 Tab: send_keys(Keys.TAB)
空格键:send_keys(Keys.SPACE)
组合输入
如复刢 Ctrl+C:send_keys(Keys.CONTROL,'c') ,其他组合键类似
可以将剪切、复制、粘贴组合使用。
002、鼠标事件
导入:
from selenium.webdriver.common.action_chains import ActionChains
鼠标事件后,都需要有一个执行的动作perform(),最常见的鼠标动作就是悬停move_to_element()
a、悬停事件
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
b、拖动事件
从源路径将鼠标滑动拖到目标路径
source = driver.find_element_by_id("xxx")
target = driver.find_element_by_id("xxx")
ActionChains(driver).drag_and_drop(source, target).perform()
UI自动化之特殊处理一(iframe\句柄\鼠标键盘)的更多相关文章
- python UI自动化之切换iframe
python+selenium写UI自动化的时候,经常会遇到需要切换iframe的情况,这里介绍几种切换iframe的方式 1.使用id定位 driver.switch_to.frame(" ...
- ui自动化笔记 selenium_webdriver,ui自动化框架(web)
Selenium学习笔记 selenium webdriver是业界公认ui自动化测试的标准,其封装的api可以对浏览器的任何地方进行操作 selenium2.0和selenium3.0的区别? 3. ...
- Python—UI自动化完整实战
实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...
- robot framework UI自动化之登录
前面已写环境的搭建,接下来就可以直接进行UI自动化的编写工作了 目录 1.准备工作 2.了解定位 3.一个登录案例 1.准备工作 第一步:需要使用chrome浏览器来测试,因此首先要有一个驱动,下载好 ...
- UI自动化之8种基础定位
UI自动化的核心在于定位 目录 1.8种基础定位方法 2.xpath定位 3.css定位 4.多组元素 1.8种基础定位方法 driver.find_element_by_id() #id定位 dri ...
- UI自动化处理文件上传
UI自动化处理文件上传 import win32guiimport win32con def set_uploader(self, file_path): sleep(2) self.file_pat ...
- 基于python2+selenium3+pytest4的UI自动化框架
环境:Python2.7.10, selenium3.141.0, pytest4.6.6, pytest-html1.22.0, Windows-7-6.1.7601-SP1 特点:- 二次封装了s ...
- Python结合Pywinauto 进行 Windows UI 自动化
转:Python结合Pywinauto 进行 Windows UI 自动化 https://blog.csdn.net/z_johnny/article/details/52778064 说明:Pyw ...
- UI自动化,你值得拥有
去年春节联欢晚会,为了那张“敬业福”,全家都卯足了劲儿“咻一咻”,连节目都顾不上看了.当时我就想,要是能自动化该多好,不停点击屏幕,屏幕不疼手还疼呢,何况还不好分心,生怕错过了“敬业福”.玩“咻一咻” ...
随机推荐
- new/delete、malloc/free 的区别
相同点 1.都可以动态的申请或释放内存 2.存储方式相同,动态申请的内存都存放在堆中,无法自动释放,要调用对应的delete和free 区别 1.new能自行的计算需要分配的空间,malloc需要 ...
- pythonr-内置函数
pythonr-内置函数 all print (all([1,-5,3])) print (all([0,-5,3])) 如果有0 就不为真,非0就是为真 打印结果 True Flase all pr ...
- 搭建jumperserver堡垒机管理万台服务器-1
搭建jumperserver堡垒机管理万台服务器-1 1 Jumpserver堡垒机概述-部署Jumpserver运行环境 2 安装Coco组件 3 安装Web-Terminal前端-Luna组 ...
- thrift的php-v0.12版本类自动加载失败
参考网上教程,使用$loader->registerDefinition('Sample', $GEN_DIR); 但是会报PHP Fatal error: Uncaught Error: C ...
- Django【第11篇】:Django之分页升级版本(组件)
分页组件 一.分页的实现与使用 class Pagination(object): """ 自定义分页 """ def __init__(s ...
- Spring源码--Bean的管理总结(一)
前奏 最近看了一系列解析spring管理Bean的源码的文章,在这里总结下,方便日后复盘.文章地址https://www.cnblogs.com/CodeBear/p/10336704.html sp ...
- 【GDOI 2016 Day2】第一题 SigemaGO
题目 分析 拆点连边+spfa. 首先把图分成2lim+1层,也就是每个点拆成2lim+1个点. 如果a和b之间.b和c有一条有向边,那么连边(k,a)-->(k+1,b),(k+1,b)--& ...
- Hybris commerce产品主数据的搜索API,批量返回若干主数据的值
新建一个产品,identifier设置为i042416-1,创建之后立即能够在Backoffice里搜索出来: 等到Storefront的indexing做完之后,前台通过关键字i042416也能将这 ...
- 51nod1820 长城之旅
题目描述 BB 痛失一血(打了场Comet OJ回来就没了) 不过后来又刷了一道水题 题解 LCM+取模=结论题 结论1 \(gcd(k^{2^i}+1,k^{2^j}+1)=1 (i\neq j 且 ...
- mysql 数据库必会题
Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 ...