Windows下部署Appium教程(Android App自动化测试框架搭建)

news2024/12/25 23:25:58

摘要: 1,appium是开源的移动端自动化测试框架; 2,appium可以测试原生的、混合的、以及移动端的web项目; 3,appium可以测试ios、android、firefox os; 4,appium是跨平台的,可以用在osx,windows以及linux系统上;

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取

B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibiliB站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

----------------------------------------------appium的一些基本概念----------------------------------------------

appium的核心其实是一个暴露了一系列REST API的server。

这个server的功能其实很简单:监听一个端口,然后接收由client发送来的command。翻译这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给appium server,appium server再把执行结果返回给client。

在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。狭义点理解,可以把client理解成是代码,这些代码可以是java/ruby/python/js的,只要它实现了webdriver标准协议就可以。

如何部署和使用Appium,一起来看看吧!

---------------------------------------------------安装各种组件----------------------------------------------------

一、安装nodejs0.8版本及以上

        地址:下载 | Node.js 中文网

        下载合适自己机型的版本,Windows下安装很简单,一直下一步;

        

        验证安装是否成功,Win+R>>cmd->>node - v,如出现类似以下提示,证明安装成功!

        

二、安装配置Java的JDK(Java软件开发工具包)

     地址:Java Downloads | Oracle

     下载合适自己机型的版本,Windows下安装很简单,一直下一步;

      打开jdk的安装目录下的bin目录,里面有许多后缀名为exe的可执行程序,这些都是JDK包含的工具。通过配置JDK的环境变量,我们可以方便地调用这些工具及它们的命令:

        javac:Java编译器,将源代码转成字节码。

        jar:打包工具,将相关的类文件打包成一个文件。

        javadoc:文档生成器,从源码注释中提取文档。

        jdb:debugger,调试查错工具。

        java:运行编译后的java程序。

       1、JAVA_HOME

        新建一个名叫“JAVA_HOME”的用户变量,如不会请参考:环境变量的作用,为什么要设置环境变量? - outcat的个人空间 - OSCHINA - 中文开源技术交流社区

        变量值为JDK的安装目录,笔者为    C:\Program Files\Java\jdk1.8.0_51

        创建好后则可以利用%JAVA_HOME%作为JDK安装目录的统一引用路径;

        2、PATH

        在已有的环境变量PATH变量值的最后追加     ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

        3、CLASSPATH

         新建一个名叫“CLASSPATH”的用户变量, 变量值为    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

        注意变量值字符串前面有一个"."表示当前目录,设置CLASSPATH 的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包;

        验证安装是否成功,Win+R>>cmd->>java -version,如出现类似以下提示,证明安装成功!

        

三、安装配置Android的SDK(Android软件开发工具包)

        地址:http://developer.android.com/studio/installing/index.html

        仅下载SDK TOOLS安装工具即可,不必安装ANDROID STUDIO,我们的测试代码写在Eclipse里;打开页面后首先看到的是Android studio,拉到页面底部,可以看到Android SDK。

    

        安装完成后,配置环境变量:

        1、ANDROID_HOME

        新建一个名叫“ANDROID_HOME”的用户变量

        变量值为Android SDK的安装目录,笔者为    C:\Program Files (x86)\android-sdk-windows

        2、PATH

         在已有的环境变量PATH变量值的最后追加     ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

         在安装目录或开始菜单中找到SDK Manager.exe并打开,工具会自动检测系统当前安了哪些SDK工具,并获取各个版本可安装的SDK,默认情况下只安装了Tools下的Android SDK Tools;图中Android SDK          Platform-tools是我自行安装的。除默认已安装选项外,其他选项可全部选中安装,也可以选择相同选项中的一项进行安装。

         

         获取可安装的SDK版本时,国内有墙,有时候会出现获取失败的情况,如下图:

         

        可以通过如下设置解决问题,选择Tools->>Options打开Android SDK Manager - Settings

        将HTTP Proxy Server和HTTP Proxy Port,连接服务器使用的代理地址和端口分别修改为“mirrors.opencas.cn”“80”;

        若该地址仍然无法解决问题不正确,请参考该网站获得更多代理地址,或从该网站上直接手动下载:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载

        或者遇到这种错误:

        Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated

        Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-7.xml, reason: SSLPeerUnverified peer not authenticated

        遇到这种错误一般是因为在公司内网,公司内网设置了代理,需要在Android SDK Manager中设置代理为公司代理。

       

       修改代理地址和端口后,选择Packages->>Reload,重新获取,等待Android SDK Tools下方提示Done loading packages,即加载完成。选择需要安装的SDK,Appium官方推荐API 17及以上的版本都支          持,可以任意安装一个API 17及以上的版本,选择右侧的Install xx packages;

       

       验证安装是否成功,Win+R>>cmd->>android -h,如出现类似以下提示,证明安装成功!(当然,已经可以正常运行Android SDK Tools,肯定是安装成功了,不妨再检查一下)

        

三、安装Appium

        地址:Redirecting

        点击Download Appium,默认就下载的是AppiumForWindows安装包,下载完成后,解压安装包,运行appium-installer.exe进行安装;

        

       注:还可以使用node.js的模块管理工具npm,输入命令在线安装(Win+R->>cmd->>npm install -g appium),但在线安装失败的几率比较大,貌似是因为网络不稳或权限问题无法解压,还是推荐直接下          载Windows安装包;

        安装完成后,配置环境变量:

        1、PATH

        在已有的环境变量PATH变量值的最后追加Appium的安装bin目录,笔者为    C:\Program Files (x86)\Appium\node_modules\.bin

        验证安装是否成功,Win+R>>cmd->>appium,如出现类似以下提示,证明安装成功!

        

四、安装Eclipse

        地址:http://www.eclipse.org/downloads/

        选择Eclipse IDE for Java EE Developers,下载合适自己机型的IDE,Eclipse不需要安装,直接将下载的安装包解压,并打开eclipse.exe,选择一个工作目录即可;

        

---------------------------------------------------测试前的准备----------------------------------------------------

一、启动一个Android模拟器或者连接上一个API 17以上的android真机

        (1)打开Android SDK Tools中的AVD Manager,点击右侧的create,新建一个新的AVD(Android Virtual Device),设置AVD的各个属性,点击OK;

        注:若SDK下载安装完整,但CPU/ABI一栏无法选择,被灰掉或禁用,则可能是SDK安装目录太长,将SDK拷贝到别的目录,再次打开AVD Manager.exe,新建一个AVD,CPU/ABI一栏就可以选择了;

        

        (2)点击右侧的start,选择Launch,启动模拟器;

        

        (3)点击launch后,可能会遇到下图中的错误:(如果没有遇到请忽略这步)

            

            这是因为电脑系统中Intel Virtualization Technology(VT-x)没有打开,解决办法为,在BIOS中开启Intel Virtualization Technology:在开机时按esc,选择F10(每个人电脑进入BIOS方法可能不同),选择Advanced->device->勾上interl virtualization Technology,保存退出。然后到Android SDK安装文件夹下的extras\intel\Hardware_Accelerated_Execution_Manager运行一下                         intelhaxm-android.exe,我的目录是C:\Program Files (x86)\android-sdk-windows\extras\intel\Hardware_Accelerated_Execution_Manager。再点击launch就没有报这个错误了,模拟器进入连接状态,等待一会,可以看到一个手机屏幕。

            注:如果手机屏幕为锁定状态,一定要滑动屏幕解锁,否则Appium无法启动被测试应用程序;启动后的手机屏幕如下:

            

二、打开Appium

    双击桌面上Appium图标,点击右上角的Launch the Appium Node Server按钮;

    

    或:Win+R->>cmd->>appium,启动Appium Server服务(和上诉方法二选一即可);

三、在Eclipse中配置Selenium、Appium类库

(1)下载Selenium类库

    client地址:http://selenium-release.storage.googleapis.com/3.0.1/selenium-java-3.0.1.zip 

    server地址:https://goo.gl/Lyo36k

    (确认2016.11.14有效,如无效请访问http://docs.seleniumhq.org/download/ 进行下载)

(2)下载Appium java版类库

    地址:http://appium.io/downloads.html

    选择java,下载jar包;

    

    

(3)在Eclipse中导入

        打开Eclipse,新建一个java Project

        

   在新项目上,新建一个Folder,命名为“lib”,将下载的三个类库“selenium-java-3.0.1.zip”、“selenium-server-standalone-3.0.1.jar”、“java-client-4.1.2.jar”,从文件夹中直接拖放到“lib”下;

         

    全选lib文件夹下的3个类包文件,右键->>Build Path->>add to Build Path,这3个类包就会加到Reference Libraries中;

    

-------------------------------------------------------开始测试--------------------------------------------------------

    (1)在项目的src下,新建一个package,在package下新建一个class(笔者的命名分别为“appiumtest”和“demo2”);

    

    在类中输入以下代码,代码内容为,启动Android模拟器上自带的Calculator计算器,并分别点击“1+2=”;  

package appiumtest;

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

public class demo2 {

private AndroidDriver driver;

@Before
public void calc() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
//capabilities.setCapability(CapabilityType.BROWSER_NAME, "");// 这句不是必须的
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
}

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

@Test
public void add() {
driver.findElementByName("1").click();
driver.findElementByName("+").click();
driver.findElementByName("2").click();
driver.findElementByName("=").click();
driver.quit();
}
}

    (2)在项目上右键->>Run As->>JUnit Test;

    

(3)测试用例正在运行,查看Appium,输出了很多运行的日志,查看模拟器,Appium控制模拟器打开了自带的计算器,并分别点击“1+2=”,至此部署Appium测试环境已完成并测试成功!接下来就可以开发真正的自动化测试用例啦!

--------------------------------------分割线(Desired Capabilities详解)-------------------------------------

        Desired Capabilities在启动session的时候是必须提供的,它本质上是key value的对象,它告诉appium server这样一些事情:

    1、本次测试是启动浏览器还是启动移动设备?

    2、是启动andorid还是启动ios?

    3、启动android时,app的package是什么?

    4、启动android时,app的activity是什么?

  Appium的Desired Capabilities是扩展了webdriver的Desired Capabilities的,下面的一些通用配置是需要指定的:

Capability名称描述可能的值举例
automationName使用哪种自动化引擎(默认:Appium)Appium   ,Selendroid
platformName使用哪种移动平台iOS,Android,FirefoxOS
platformVersion移动平台版本7.1,4.4
deviceName启动哪种设备?真机还是模拟器iPhone   Simulator, iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy   S4,etc…. On iOS,this should be one of the valid devices returned by   instruments with instruments -s devices. On Android this capability is   currently ignored.
app应用(.ipa   .apk .zip)的绝对路径或远程的Http URL/abs/path/to/my.apk   , http://myapp.com/app.ipa
browserName移动浏览器的名称(如果被测应用程序已安装到移动设备,则可设置为空字符串)‘Safari’   for iOS and ‘Chrome’, ‘Chromium’, or ‘Browser’ for Android
newCommandTimeout客户端退出和结束会话之前,Appium等待从客户端发来一个新命令的时间,即超时时间(秒)60
autoLaunch是否自动安装和启动被测app(默认:true)true,   false
language(Sim/Emu-only)   Language to set for the simulator / emulatorfr
locale(Sim/Emu-only)   Locale to set for the simulator / emulatorfr_CA
udid物理机的id1ae203187fc012g
orientation(Sim/Emu-only)   start in a certain orientationLANDSCAPE,PORTRAIT
autoWebviewMove   directly into Webview context(默认:false)true,   false
noReset在测试前不重置app的状态(默认:false)true,   false
fullResetIOS:删除整个模拟器目录;Android:通过卸载app的方式重置app的状态,而不是仅清除app的数据,在Android设备上,当测试结束后,也会彻底移除app(默认:false)true, false

下面这些属性是android平台特定的(还有很多没有列出来的可以查看:http://appium.io/documentation.html):

Capability名称描述可能的值举例
appActivity待测试的app的Activity名字,原生app的话要在activity前加个"."MainActivity,   .Settings
appPackage待测试的app的java   packagecom.example.android.myApp,   com.android.settings

--------------------------------------分割线(工具的使用)-------------------------------------

通过上一节我们发现,要获取app的package和activity名字,要用什么工具呢?

一、monitor.bat

        该文件位于SDK安装目录tools下,如笔者在“C:\Program Files (x86)\Android\android-sdk\tools”下,双击运行monitor.bat即可运行,该工具可以帮我们找到android控件的content-description,为以后的find_element_by_accessibility_id 定位方法做参数使用,也可查看被测app的appPackage,如下图。

    

二、uiautomatorviewer.bat

        该文件位于SDK安装目录tools下,如笔者在“C:\Program Files (x86)\Android\android-sdk\tools”下,双击uiautomatorviewer.bat即可运行,该工具主要用来查看控件的属性,比如resource id,class name等,也可查看被测app的appPackage(Desired Capabilities中使用)。

        使用方法(以计算器为例):将模拟器的打开,点击左上角绿色的Android小图标(Device ScreenShot),可以为当前界面UI创建一个带有控件信息的截图,将鼠标放在想要的地方,即可看到控件的相关属性:

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【系统开发】尚硅谷 - 谷粒商城项目笔记(七):消息队列

文章目录 消息队列概述两大种类RabbitMQ安装及基操Docker中安装添加用户创建Virtual Hosts设置权限添加交换机创建队列交换机绑定队列 五种消息模型SpringBoot整合MQ引入依赖properties配置开启RabbitMQ API使用创建交换机创建队列交换机绑定队列发送消息接收消息 消息确认机制…

Notification API实战

什么是Notification? Notifications API 的接口 Notification 用于配置以向用户显示桌面通知。 这些通知的外观和功能因平台而异,但通常它们会提供一种异步向用户提供信息的方式。 前置要求 win10系统,且通知与操作中开启浏览器的通知权限 浏…

学习 SSL/TLS ,这一篇就够了

写在前面 如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。单击浏览器地址栏的小绿锁,即可查看证书中的详细信息。那么一本证书是如何诞生的?HTTPS 背后的 SSL/TLS 是如何在工作过程中…

❤ vue3 组件传值

❤ vue3 组件传值 [1] 子组件向父组件传值 使用emit使用方法 【子组件】 1、定义 emits,emits的定义是与component、setup等这些属性是同级 emits此时是作为数组,它也可以接收一个对象 2、使用 setup(props, { emit, refs }) {emit(addImg, 参数); }有时候需使…

Ubuntu20.04的cuda、cudnn、paddle安装完整过程

1、查看显卡驱动版本 显卡驱动安装看这篇: https://blog.csdn.net/Trisyp/article/details/131302061?spm1001.2014.3001.5501 然后输入命令nvidia-smi 查看显卡状态 2、CUDA 下载安装 直接手动在官网下载:CUDA Toolkit Archive | NVIDIA Developer…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 21 日论文合集)

文章目录 一、检测相关(14篇)1.1 CrossKD: Cross-Head Knowledge Distillation for Dense Object Detection1.2 Depth and DOF Cues Make A Better Defocus Blur Detector1.3 Spatiotemporal Pyramidal CNN with Depth-Wise Separable Convolution for Eye Blinking Detection …

使用Kettle做数据迁移

1.Kettle简介 Kettle是一个颇受认可的开源ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程)工具,2006年被Pentaho收购,2015年又被Hitachi Vantara收购,正式命名为PDI。 PDI EE(企业商用版&#xff0…

ASP.NET Core MVC 从入门到精通之Filter

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

【数据分享】1929-2022年全球站点的逐月降雪深度数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…

JavaScript排序sort()方法(解决null、undefined、0之间的排序(混乱)问题)

问题: 如果数组内某一对象为空值,排序是怎样的呢?(显然并不是按年龄顺序排序的,因为存在null和undefined) var arr[{"age":24,name:zs},{"age":0,name:ls},{"age":0,name:gr},{"…

数据结构算法 -分而治之算法

引言 坤坤是一个养鸡场的员工,他非常热爱他的工作,并且总是努力提高他的专业技能。有一天,养鸡场接到了一项任务:在短时间内处理一批大量的鸡。 这批鸡数量非常大,比普通的数量要多得多,坤坤意识到他们需…

作业(Job)——OS

目录 1、批处理作业 2、交互式作业 小结:作业、进程、线程 作业概念 :用户要求计算机系统为其完成的计算任务集合。 作业步(job step) :作业处理过程中一个相对独立的步骤 一般一个作业步可由一个进程完成某些作业步之间可以并…

2023世界人工智能大会-图技术高峰论坛重磅来袭!邀您共同参与!

2023年7月6-8日,一年一度的世界人工智能大会(WAIC)即将拉开帷幕。创邻科技作为大会的战略合作伙伴,将承办第三届图技术高峰论坛。 过去两届图技术论坛,分别以“大数据关联”和“AI应用”为关键词,邀请图技…

基于ChatGPT的端到端语音聊天机器人项目实战(一)

基于ChatGPT的端到端语音聊天机器人项目实战 ChatGPT API后台开发实战 本节主要是跟大家分享一个端到端的基于模型驱动的对话机器人,会有前端和后端,也会有一些具体模型的调用,读者需具有Python语言编程的基础,这是前置性的条件,有了这个基础,理论上讲本节所有的内容,…

Sui Move HackerHouse预热开启,9月大理见

9月3日,Sui Move 主题的 Antalpha HackerHouse 将在大理举办,为期 21 天,向所有 Web3 开发者发出 co-buidling & co-living 邀请。 本期 HackerHouse 由 Antalpha Labs 发起,Sui Foundation赞助,MoveFuns DAO、No…

魔视智能MOTOVIS入选世界经济论坛「2023年度技术先锋」

○世界经济论坛(World Economic Forum)宣布从全球范围内选出了100家最有前途的技术先锋企业,这些企业致力于解决可持续性、气候变化和医疗保健等问题。 ○作为嵌入式人工智能自动驾驶的推动者,魔视智能MOTOVI…

项目管理,到底管什么?

在以前,项目管理职能单一且明确的时候,大家对项目管理的认知还比较统一:一个项目经理带领一个团队完成一个项目。 而在现在的环境下,尤其是互联网,项目经理的职能和定位以不同公司、不同老板、不同需要而参差不齐&…

制造业数字化转型解决方案

制造业数字化转型解决方案 数字化转型已成为制造业发展的必由之路,要提高生产制造水平,就需要提高对生产运营各环节数据的采集、处理和利用效率。当前的工业数据采集仍存在种种不足,现可以利用具有强大设备接入能力、通信协议转换能力、数据…

多线程(十):总结

本章用来处理一下之前遗漏的很多问题,在多线程那一章,很多常见面试题都没有讲,这里再来补充一下。 HashTable, HashMap, ConcurrentHashMap 之间的区别 HashTable, HashMap, ConcurrentHashMap 都带有Map,它们其实都是 Map 的接…

数据库设计软件Power Designer详解教程(附源码)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Power Designer概述 Power Designer 是美国Sybase公司的CASE工具集,利用Power Designer可分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical D…