java+appium+安卓模拟器实现app自动化Demo
网上有比较多相关教程,自己写一遍,加深下印象。
环境搭建
据说,很多人都被繁琐的环境搭建给吓到了。
是的,确实,繁琐。
node.js
cmd输入node -v,出现下图说明成功。
JDK
cmd输入java -version,出现下图说明成功。
Android SDK
cmd输入adb,出现下图说明成功。
Appium Desktop
Maven
cmd输入mvn -version,出现下图说明成功。
IntelliJ IDEA
安卓模拟器
把Android SDK目录下\platform-tools的adb.exe拷贝
打开Nox\bin目录
粘贴替换adb.exe
打开模拟器
cmd输入adb connect 127.0.0.1:62001
再输入adb devices
有道计算器
下载后,apk文件存放在某目录下即可。
将apk文件直接拖入安卓模拟器中。
至此,环境搭建完毕,共安装了8个程序。
实现步骤
打开IntelliJ
创建maven项目
点击ok后,复制下面代码到pom.xm中
<dependencies>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.2</version>
</dependency>
</dependencies>
复制粘贴下面代码
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AppDemo {
private AppiumDriver driver;
@BeforeClass
public void setup() throws Exception {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.BROWSER_NAME, "");
cap.setCapability("platformName", "Android"); //指定测试平台
cap.setCapability("deviceName", "127.0.0.1:62001"); //指定测试机的ID,通过adb命令`adb devices`获取
cap.setCapability("platformVersion", "5.1.1");
//将上面获取到的包名和Activity名设置为值
cap.setCapability("appPackage", "com.youdao.calculator");
cap.setCapability("appActivity", "com.youdao.calculator.activities.MainActivity");
// //A new session could not be created的解决方法
// cap.setCapability("appWaitActivity", "com.meizu.flyme.calculator.Calculator");
// //每次启动时覆盖session,否则第二次后运行会报错不能新建session
// cap.setCapability("sessionOverride", true);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
}
@Test
public void plus() throws Exception {
Thread.sleep(3000);
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
int x0 = (int)(width * 0.8); // 起始x坐标
int x1 = (int)(height * 0.2); // 终止x坐标
int y = (int)(height * 0.5); // y坐标
for (int i=0; i<5; i++) {
driver.swipe(x0, y, x1, y, 500);
Thread.sleep(1000);
}
driver.findElementById("com.youdao.calculator:id/guide_button").click();
for (int i=0; i<6; i++) {
driver.findElementByXPath("//android.webkit.WebView[@text='Mathbot Editor']").click();
Thread.sleep(1000);
}
String btn_xpath = "//*[@resource-id='com.youdao.calculator:id/view_pager_keyboard']/android.widget.GridView/android.widget.FrameLayout[%d]/android.widget.FrameLayout";
driver.findElementByXPath(String.format(btn_xpath, 7)).click();
driver.findElementByXPath(String.format(btn_xpath, 10)).click();
driver.findElementByXPath(String.format(btn_xpath, 8)).click();
Thread.sleep(3000);
}
@AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}
文件右键run
然后可以看到脚本在跑了
打开安卓模拟器
一会就看到
计算器app在自己动了!
java+appium+安卓模拟器实现app自动化Demo的更多相关文章
- [python]Appium+python +pytest 实现APP自动化,基于安卓
1.安卓环境搭建 &关于app自动化,个人觉得安装过程比较复杂,脚本难度实现和web自动化差不多封装关键字即可,因此,下面会写安装.启动APP以及过程中遇到的一些坑(这一篇偏向解释给个人) & ...
- 使用Fidder从安卓模拟器获取APP内H5游戏网址
大家都知道H5游戏其实是网页,但是有些APP或者微端不显示网址链接.这里给大家介绍介绍一种,利用Fiddler进行抓包,获取APP打开的网址的方法.有人说何必多此一举呢,直接用模拟器玩游戏就好了.的确 ...
- java接受安卓及ios App上传的图片,并保存到阿里OSS
做后台的时候,写了两个方法,分别用来获取安卓和苹果IOS端上传的头像,保存到阿里云OSS图片存储服务器上.(SMM框架) 安卓及H5版本: /** * 上传用户头像 */ @RequestMappin ...
- appium+python+安卓模拟器环境搭建和启动app实例
本文主要介绍在windows环境下搭建app自动化测试环境,具体步骤如下: 1.下载安卓sdk,网上很多资源 2.下载并安装安卓模拟器,官网上有 删除bin文件下的adb.exe和nox_adb.ex ...
- 用java和junit编写app自动化测试用例
package myTest; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver ...
- Appium + Python App自动化第一个脚本
今天跟大家讲解一个Appium和Python App自动化的脚本.[1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面[4]拖动你 ...
- appium安卓自动化的 常用driver方法封装
appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...
- appium安卓自动化常见问题处理
appium安卓自动化常见问题处理 1.seesionnotcreatedexception 遇到这个首先确定下jdk需要1.7以上 然后还要确定appium是启动状态,可以cmd重启下appium ...
- Appium自动化测试教程-自学网-安卓模拟器
安卓模拟器: 夜神模拟器安装配置 下载地址:https://www.yeshen.com 开启VT VT是什么?为什么要开启VT? VT,全称是Virtualization Technology,即是 ...
随机推荐
- objectdatasouce的温故
在做ecxel的时候,需要前台做一个联动的效果. 记录一下这个数据源的用法,大学时候用的,忘得差不多了 首先就是往页面拖拽一个objectdatasouce的控件 然后配置数据源: 选择业务对象(其实 ...
- Matlab atan2
对Matlab不是很熟悉,在这个Matlab atan2 函数上出现了问题. 百度知道上的解释是这样的: atan2() 区别于 atan() 函数,返回 -pi~+pi 范围的角度: 使用过程中发现 ...
- Git更新代码
此次更新,创建新的文件与文件夹,并且删除了原有文件 通过“git status” 命令查看当前变更.通过变更信息可以看出,删除了test_case.py文件.这个删除只是在项目目录下进行删除,Git对 ...
- JavaScript中Null和Undefined的区别
Null: null是js中的关键字,表示空值,null可以看作是object的一个特殊的值,如果一个object值为空,表示这个对象不是有效对象. Undefined: undefined不是js中 ...
- PAT_A1105#Spiral Matrix
Source: PAT A1105 Spiral Matrix (25 分) Description: This time your job is to fill a sequence of N po ...
- eas之载入编辑界面时设置明细默认值createNewDate()
protected com.kingdee.bos.dao.IObjectValue.createNewDate(){ //new一个对象 PurOrderInfo info=new Pu ...
- android的数据与访问(1)-我的app配置参数文件放在哪儿?
系统提供数据处理方式: 1.SharedPreferences 2.文件存储 3.轻量级的数据.如SQLLite 1.简单存储 是android提供的起来年纪的数据存储方式:SharedPerence ...
- 暑假集训D12总结
刷题 今天终于不考试= = 上午刷了一大圈线段树板子题,于是算是学会了Zkw线段树= = 下午昨天的dalao又来讲几何,然而仍然没有笔记= = 于是刷了一大圈计算几何的水题= =,并没哟啥可以写出题 ...
- 【ACM】hdu_1234_开门人和关门人_201307300845
开门人和关门人Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- java中类的路径为什么这么长