当前位置: 首页 > news >正文

6、通过Appium Desktop 实现录制功能

1、老规矩,我们进入下面这个界面

 图中红色标记1为 “top by coordinates”  按钮, 这是一种通过坐标定位元素的方式。
 图中红色标记2为 “Start Recording”  按钮, 选中表示处理录制状态。

2、点击“top by coordinates”  按钮,再点击 “Start Recording”  按钮,我们就可以在左则的 App 界面上点点点了。 脚本会随着我们的点击生成。

 

 3、选择导出的脚本语言,如下所示,可以选择如下5种

 

 4、我们选择导出java语言

 图中红色标记1为 我们选择java-JUnit格式的代码

 图中红色标记2为 生成完整的脚本

 图中红色标记3为 复制

5、最终我们得到如下代码

import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;

public class SampleTest {

  private AndroidDriver driver;

  @Before
  public void setUp() throws MalformedURLException {
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability("automationName", "Appium");
    desiredCapabilities.setCapability("platformName", "Android");
    desiredCapabilities.setCapability("platformVersion", "6.0");
    desiredCapabilities.setCapability("appPackage", "com.android.calculator2");
    desiredCapabilities.setCapability("appActivity", ".Calculator");
    desiredCapabilities.setCapability("deviceName", "msm8953_64");

    URL remoteUrl = new URL("http://localhost:4723/wd/hub");

    driver = new AndroidDriver(remoteUrl, desiredCapabilities);
  }

  @Test
  public void sampleTest() {
    (new TouchAction(driver)).tap(429, 574).perform()
    (new TouchAction(driver)).tap(596, 691).perform()
    (new TouchAction(driver)).tap(424, 572).perform()
    (new TouchAction(driver)).tap(418, 1067).perform()
  }

  @After
  public void tearDown() {
    driver.quit();
  }
}

 

 6、分析脚本

我们发现它生成的控件定位都是以坐标形式的, 但是我们知道坐标定位是不可靠的,因为它会受屏幕大小和分辨率的影响 。不过呢,个人认为也是有可以借鉴之处,至少对Appium有了一个简单的认识

 

转载于:https://www.cnblogs.com/suim1218/p/8793895.html

相关文章:

  • 文件上传漏洞攻击
  • Micropython TPYBoard V10X拼插编程实践之定时器 代码不精通?...
  • 从抖音关闭评论,看服务治理的重要性
  • diango-团队介绍
  • ModeBusRtu概述
  • Project中最常用的注意点
  • 云时代,ERP选型莫走入低价、免费误区
  • 以太坊智能合约开发第六篇:truffle开发框架
  • CSS居中完全指南——构建CSS居中决策树
  • 悲观的并发策略——synchronized互斥锁
  • 一步一步构建自己的管理系统之 ------登入注册
  • 64位linux安装wine等软件
  • javascript 日期函数
  • spring IOC AOP实现原理
  • Python数据挖掘与机器学习技术入门实战
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • const let
  • ERLANG 网工修炼笔记 ---- UDP
  • Java IO学习笔记一
  • Js基础知识(四) - js运行原理与机制
  • Nacos系列:Nacos的Java SDK使用
  • Node项目之评分系统(二)- 数据库设计
  • python_bomb----数据类型总结
  • React as a UI Runtime(五、列表)
  • Redis在Web项目中的应用与实践
  • Vue 2.3、2.4 知识点小结
  • 从setTimeout-setInterval看JS线程
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 回顾2016
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 思考 CSS 架构
  • 译米田引理
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • Nginx实现动静分离
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (4.10~4.16)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C++17) std算法之执行策略 execution
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)nsfocus-绿盟科技笔试题目
  • (转载)从 Java 代码到 Java 堆
  • .net core使用ef 6
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .php文件都打不开,打不开php文件怎么办