app自动化的特殊操作
一.截屏
File srcfile=driver.getScreenshotAs(OutputType.FILE); //得到截图源文件对象
File dstfile=new File("C:\\Users\\86130\\Desktop\\photo\\screenshot"); //生成本地文件的目标文件对象
try {
FileUtils.copyFile(srcfile,dstfile); //把截图源文件拷贝到目标文件中(以文件的形式保存到本地)
} catch (IOException e) {
e.printStackTrace();
}
二.点击坐标
开发者选项中勾选指针位置,手机页面增加坐标定位,触摸可得到位置的坐标
TouchAction touchAction=new TouchAction(driver); //得到TouchAction对象
PointOption pointOption=PointOption.point(140,1300); //通过touchAction提供的API,press需要传入pointoption类型的参数
touchAction.press(pointOption).release().perform(); //release:手指抬起;perform:让动作生效
三.手势操作-滑动
TouchAction touchAction1=new TouchAction(driver);
int width=driver.manage().window().getSize().getWidth(); //获取屏幕的宽和高,通过比例来滑动屏幕,即使更换手机屏幕分辨率,也不影响代码的操作
int height=driver.manage().window().getSize().getHeight();
PointOption pointOption1=PointOption.point(width/2,height*2/3); //把坐标换为pointoption类型,press需要的参数
PointOption pointOption2=PointOption.point(width/2,height/3);
Duration duration=Duration.ofSeconds(2); //把滑动时间换成waitaction类型,需要两步。先把时间换成duration类型,再把duration转换为waitoption类型
WaitOptions waitOptions=WaitOptions.waitOptions(duration);
touchAction1.press(pointOption1).waitAction(waitOptions).moveTo(pointOption2).release().perform(); //按下滑动起始点到滑动终点,再释放
四.元素通过工具定位
由于有些页面做了截图限制,无法通过工具(元素定位工具,adb等)进行截图
(可通过adb命令验证页面是否做了限制:adb shell screencap -p /sdcard/test.png
举例:哔哩哔哩,银行系统,密码输入页面
通过getPageSource获取到当前页面源代码,再从获取到的页面源代码中找到需要的元素
driver.findElement(MobileBy.id("tv.danmaku.bili:id/avatar")).click();
System.out.println(driver.getPageSource()); //由于无法定位到哔哩哔哩登录页的元素,可通过getPageSource获取到当前页面的源代码,再从获取到的页面源代码中找到需要的元素
driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"密码登录\")")).click(); //此元素是从getPageSource()得到的源代码中获取到的
五.toast元素定位
By bypresent=MobileBy.xpath("//*[contains(@text,'未注册,请先注册')]");
app自动化的特殊操作的更多相关文章
- APP 自动化之手势操作appium提供API详解(四)
一.手势操作1.上下左右滑屏 swipe---滑动 java-client 4.x 是有swipe方法的,可以通过传递坐标信息就可以完成滑动androidDriver.swipe(startx, st ...
- App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.App 元素定位方式 二.元素操作 三.测试混合应用 四.以代码的方式执行 Pytest 命 ...
- APP自动化框架LazyAndroid使用手册(1)--框架简介
作者:cryanimal QQ:164166060 APP自动化简介 APP自动化,即通过自动化的方式,对APP施行一系列的仿按键输入.触摸屏输入.手势输入等操作,以达到对APP的功能进行自动化测试 ...
- APP自动化针对PO模式进行二次封装之basepage
APP自动化跟WEB自动化所使用的框架基本一样,都是采用的PO模式结合pytest框架编写自动化测试脚本,为了提高代码的复用性.稳定性和易维护性,我们针对PO模式进行了二次封装,将日志,等待以及异常截 ...
- App 自动化框架设计思路
最近在整理和学习Appium+Java 自动化框架,对APP自动化框架的部分设想参考了一些文章,先进行整理下: 框架的思路一: 思考引入:https://www.cnblogs.com/yunfeio ...
- APP自动化环境配置
做自动化很多人都不喜欢做app自动化,说实话,我也不喜欢做app自动化,但是没办法,老板给你钱,让你做,不得不做! 其实app自动化的难点就在于环境,环境OK了之后一切都和web自动化差不多,顶多就是 ...
- 手机APP自动化环境搭建
1 摘要 近年来,随着移动应用从数量上和逻辑复杂程度上的增长,以及产品发布周期的紧缩,使得回归测试迫在眉睫,鉴于此APP自动化测试变得越来流行,当前主流的APP自动化工具有:Appium.Roboti ...
- [python]Appium+python +pytest 实现APP自动化,基于安卓
1.安卓环境搭建 &关于app自动化,个人觉得安装过程比较复杂,脚本难度实现和web自动化差不多封装关键字即可,因此,下面会写安装.启动APP以及过程中遇到的一些坑(这一篇偏向解释给个人) & ...
- APP自动化,怎样让应用不重置?
noReset =True产生的背景: 在编写APP自动化代码时,除了登录用例需要填写账号和密码外,其余很多用例都是需要先登录再操作的,如果每一个用例都从头开始到具体的操作,这样将会耗费很多时间,此时 ...
- appium连接手机 adb调试 app自动化
一. 工具准备 jdk,java环境必备. android sdk,要使用内置的Android debug bridge,简称adb,调试手机用. appium,提供自动化服务,app自动化的核心库. ...
随机推荐
- Pinely Round 4 (Div. 1 + Div. 2)
题目链接:Pinely Round 4 (Div. 1 + Div. 2) 总结:被B卡了一年. A. Maximize the Last Element tag:模拟 Description:给定一 ...
- 两种方式让你用Python轻松在RDKX5上部署推理
作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 宿主机环境:WSL2-Ubuntu22.04+Cuda12.6.D-Robotics-OE 1.2.8.Ubun ...
- Numa初识
本文分享自天翼云开发者社区<Numa初识>,作者:j****n Numa产生 在二十世纪九十年代被开发出来的. 首次商业化实现基于NUMA的Unix系统的是对称多处理XPS-100系列服务 ...
- Java 中堆内存和栈内存上的数据分布和特点
博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈 by emanjusak ...
- 用 C# 插值字符串处理器写一个 sscanf
插值字符串处理器 C# 有一个特性叫做插值字符串,使用插值字符串,你可以自然地往字符串里面插入变量的值,比如:$"abc{x}def",这一改以往通过 string.Format ...
- JS实现隐藏手机号码中间4位数
代码COPY 3. 使用正则 function geTel(tel){ var reg = /^(\d{3})\d{4}(\d{4})$/; return tel.replace(reg, " ...
- Linux - centos6.6升级openssh9.7p1
一.注意事项 1.任何会被修改的配置文件都要提前备份 2.每一步操作都要记录 3.提前预演,知道可能遇到的问题,以及对应的解决方法,能够在生产环境上升级时,更快完成操作. 4.一开始用来操作的ssh会 ...
- springboot2.1.6整合activiti6.0(二)--网页流程编辑器bpmnjs
网页流程编辑器bpmnjs 官网:https://bpmn.io/ github:https://github.com/bpmn-io/bpmn-js-examples 因为还需要做一些改造,才能使其 ...
- ISCSI数据盘的多路径配置
本文分享自天翼云开发者社区<ISCSI数据盘的多路径配置>,作者:w****n 多路径出现的背景 多路径,就是说,主机到存储可以有多条路径可以选择.主机到存储之间的IO由多条路径可以选择. ...
- Windows编程----内核对象竟然如此简单?
什么是内核对象 内核对象本质上就是内存中的一块内存 ,这块内存由操作系统进行管理和分配,任何应用程序都无法直接操作这块内存区域.至于内核对象的作用,我们暂且不说,这里只需要直到它是内存中的一块内存. ...