我的第一篇appium小代码

本文介绍了如何使用Appium进行移动应用自动化测试的基础设置与实践,包括Genymotion虚拟机配置、真实设备连接、UIAutomatorViewer元素定位工具的使用及自动化参数配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的第一篇appium小代码

完成了上一篇的环境配置操作,就可以开始写我们的appium自动化代码了。

在编写代码的时候,可以使用genymotion虚拟机操作,也可以通过USB连接真机操作,下面我会区分这两种情况。
刚开始我操作的时候,就是打开appium,然后点击运行;打开genymotion,选择虚拟机打开;打开eclipse,编写程序,直接运行。这样操作会报错的,通过虚心学习,我明白在运行前,需要对genymotion做一些设置,同时,学会了运用uiautomatorviewer工具来帮助完成元素定位。
1、对genymotion设置。除了要下载各版本的虚拟机,还需要做一些可以连接appium的配置。
这里写图片描述
2、进入设置页面,选择ADB设置,选择第二个选项,点击“Browse”,选择Android sdk安装路径,点击确认。
这里写图片描述
3、点击“ADD”,添加安卓模拟机。
这里写图片描述
4、弹出的页面需要缓冲一会,然后就可以选择机型下载各类模拟机。建议选择的安卓版本与sdk下载的API版本相近,和下载Android sdk中支持的机型。
这里写图片描述
5、下载成功的安卓机型会出现在列表中,选择机型,点击“STRA”就可以运行该虚拟机。
这里写图片描述
Genymotion配置好后,我们可以先学习下如何使用uiautomatorviewer定位元素(前提:已经在虚拟机或者真机中已经打开了测试APP),首先在Android sdk安装路径中的tools包中找到uiautomatorviewer.bat文件,打开这个文件,会出现如下界面:
这里写图片描述
然后点击第二个图标,获取当前连接的设备界面:
这里写图片描述
再点击第三个图标,可以定位当前页面的元素,在右边界面可以获取到所定位的元素信息:
这里写图片描述
借助这个元素定位方式,我们就可以轻松获得元素,然后对元素进行操作啦。
接下来,我们开始在eclipse上编写脚本代码。
脚本代码在正式执行APP自动化步骤前,需要做一些自动化参数配置。以下我整理了一些自动化配置参数。

//设置APK路径
File classpathRoot = new File(System.getProperty(“user.dir”));
File appDir = new File(classpathRoot,”app”);
File app = new File(appDir,”app-beta-release.apk”);

//这里需要注意的是,aPP的名字必须与app文件夹中的名字相同
这里写图片描述

//设置自动化参数
DesiredCapabilitise capabilities = new DesiredCapabilities();
capabilities.setCapability(“automationName”,”Appium”); //使用appium
capabilities.setCapability(“platformName”,”Android”); //使用安卓设置
capabilities.setCapability(“platformVersion”,”4.4.4”); //设置安卓系统版本
capabilities.setCapability(“deviceName”,”192.168.27.102:5555”);
//安卓模拟器设备类型(如果是真机,那就是真机设备类型)

//注:查看设备类型,可以通过运行cmd命令行“adb devices”查询
这里写图片描述

capabilities.setCapability(“app”,app.getAbsolutePath()); //设置APP路径
capabilities.setCapabiliy(“appPackage”,”com.dg11185.mypost”); //设置APP的主包
capabilities.setCapability(“appActivity”,”.MainActivity”); //设置APP的主类名

//如何获取测试APP的主包名和主类名
/*
第一种方法:
1、输入cmd命令行“adb shell”
2、输入“logcat|grep cmp=”
3、如图:
这里写图片描述
第二种方法:
在Uiautomatorviewer中可以查看主包名
第三种方法:
hierarchy view中可以获取设备当前页面的package和activity信息
1、在cmd下输入“adb devices”可以查到对应的连接
2、进入对应的Android sdk目录下, 进入tools目录,双击“hierarchyview.bat”,弹出的页面如下所示:
这里写图片描述
注意:hierarchy view经常连不上真机,无法获取activity,这个时候就需要使用其他方法来获取activity。
第四种方法:
打开要测试的APP,在cmd命令中输入“adb shell dumpspy activity activities”,查看。如下图所示:
这里写图片描述
其中,com.dg11185.mypost是包名,.MainActivity是当前活动的activity

capabilities.setCapability(“sessionOverride”,”ture”); //每次启动时覆盖session(非必要)
capabilities.setCapability(“noReset”,”ture”); //在当前session前不重置APP状态
//初始化
driver = new AndroidDriver<>(new URL(“http://127.0.0.1:4723/wd/hub”),capabilities);
/*
127.0.0.1是默认指向本地IP,可是如果使用了虚拟机的话,会默认首选虚拟机IP,运行时脚本会报错;所以如果有使用虚拟机,最好用本地实际IP替换127.0.0.1;接口4723为appium中设置的接口,可以根据自己的设置来更改4723
*/
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
//隐式等待,在查找元素的时候,全局等待30S

其他自动化参数配置及详解(可以查看http://appium.io/slate/en/master/?ruby#appium-server-capabilities):
DesiredCapabilities 负责启动服务端时的参数设置
Server capabilities
Capability Appium 、Selendroid
platformName 平台的名称:iOS, Android, or FirefoxOS
platformVersion 移动设备的系统版本号,7.1, 4.4
deviceName IOS:instruments -s devices,Android:随便写
app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app.ipa
browserName 测试的web浏览器,如果是测app则忽略
newCommandTimeout 等待新命令的最长时间,超时后退出。默认是60s
autoLaunch 是否自动安装和启动,默认true
language 模拟器的语言设置
locale 模拟器的地区设置
udid 设备号
orientation 模拟器的横竖屏设置
autoWebview Move directly into Webview context
noReset 在当前session前不重置app状态
fullReset ios删除文件夹,Android删除app数据。

android only
appActivity 要启动的Activity
appPackage 要启动的包
appWaitActivity 等待的Activity
appWaitPackage 等待的包
deviceReadyTimeout 等待设备就绪的时间
System.getProperty(“user.dir”)
// user.name 用户的账户名称
// user.home 用户的主目录
// user.dir 用户的当前工作目录

getAbsolutePath():返回抽象路径名的绝对路径名字符串。
capabilities.setCapability(“app”,”app.getAbsolutePath()”);
capabilities.setCapability(“noSign”,”true”); //避免重签名

**运行时遇到的问题,原因和解决方法:
1、Android_home没有配置好,我配置的是Android_sdk_home,所以重新配置了android_home环境变量;
2、IP自动首选虚拟机IP地址,导致无法打开新进程。这个时候需要到网络中心设置禁用虚拟机网络。
3、在脚本运行中,APP页面无响应,运行报错,原因是系统还未反应脚本已执行,自然就报错了;这个时候需要添加等待时间,可以用Thread.sleep(1000)设置线程强制等待。
4、还有一些就是编程问题,因为对Java语言的生疏导致编写代码错误,需要重新学习Java,更熟悉使用Java语言编写代码。**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值