搭建基于C#和 Appium 的 Android自动测试环境

移动端的自动化测试框架主要就是UiAutomator,Espresso,Robotium和功能最强大,也是比较热门的框架Appium

如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使用的人多,资料丰富,支持语言多 Jave,Python,C#,Ruby,PHP,碰见问题也容易得到帮助。没有其他框架那么大局限。

关于Appium环境搭建的例子网上比较多,不过都是关于Python,Java的,使用C#客户端的资料比较少,公司现有的测试系统是基于C#构建的,因为要和现有系统集成,所以选择的C#语言作为客户端, 下载Appium 官网提供的C#例子,但是对应的Android 版本,Nunit 版本都比较旧,对于初次接触手机测试的人来说,一步一个坑,把例子拿下来,折腾了一两天,还是各种问题。最终通过百度,Google,终于搭建好了环境,现在分享一下过程,希望对于后来人会有些帮助。

默认大家是安装了Visual Studio 的,如果没有安装,请百度如何安装Visual Studio

搭建环境有三部分,模拟器环境准备,Appium服务器环境准备,C#单元测试工程环境准备,关于前两部分群内都有视频资料,大家可以参考。

下面我们开始:

模拟环境搭建 模拟环境搭建建议用Android Studio ,这样配置简单,模拟器的性能也强一些。

下载地址:www.android-studio.org/ 最新版本是3.2

安装完成后打开 Android Studio

在Tools菜单下找到 SDK Manager 菜单打开( Tools –>SDK Manager)显示如下:

找到 Android SDK (Appearance & Behavior ->System Setting -> Android SDK)

安装 Android SDK 例如:Android 6.0

接下来配置环境变量:

配置ANDROID_HOME 变量,对应的目录可用从下面位置找,

我对位置做过调整,和默认安装的位置不一样。

将 E:\android-sdk 替换成自己机器的地址。

在Path 中追加:%ANDROID_HOME%\platform-tools; %ANDROID_HOME%\tools

安装完SDK 后就可以安装模拟器了,关闭SDK Manager ,打开 AVD Manager (Tools ->AVD Manager)

点击左下角的Create Virtual Device 打开了 Virtual Device Configuration

选择 phone ,找一个分辨率小一些的机型 例如 480X800 ,分辨率高了比较耗费资源。

点击Next

选择 other Images, 找到你刚才下载的SDK 对应的Image ,上面选了Android 5.0 我们就下 Android 6.0 对应的Image ,点击Download 进行下载。完成后就可以点击Next 到最后一个画面了。

点击Finish 就完成了虚拟机的创建。

点击启动,启动虚拟机

这样虚拟机就配置并启动起来了,上面的镜像使用的是arm 版本,如果你的机器是X86,Android Studio 建议你使用X86的虚拟机。如果想使用X86的虚拟机,需要在Bios中开启 Virtualization Technology 设定为Enable ,操作系统可能也要做一些配置,这里就不细说了。

接下来我们安装AppiumServer。可以到官网下载。

下载地址:github.com/appium/appi…

Windows 操作系统 X86_64 处理器下载 appium-desktop-setup-1.7.1.exe 就可以了。

启动Appium

点击 Start Server v1.9.1

这样Appium Server 就启动了。

最后我们来配置单元测试工程。

启动Visual Studio ,创建一个单元测试工程。

在 NuGet 中查找 Appium (Tools ->NuGet Package Manager -> Manage NuGet Package for Solution…)

找到 Appium.WebDriver ,选择单元测试工程进行安装。

完成后使用下面代码替换自动生成的单元测试代码。运行单元测试,就可以看到如下模拟器中的计算器被打开,并点击了数字5。如下图:

 1using Microsoft.VisualStudio.TestTools.UnitTesting;
2
3using OpenQA.Selenium.Remote;
4
5using System;
6
7namespace androidTest
8
9{
10
11    [TestClass]
12
13    public class UnitTest1
14
15    {
16
17        [TestMethod]
18
19        public void TestMethod1()
20
21        
{     如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。
22              感兴趣可以175317069,群内会有不定期的发放免费的资料链接,这些资料都是从
23              各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明
24              出处之后分享给大家。
25
26            DesiredCapabilities capabilities = new DesiredCapabilities();
27
28            capabilities.SetCapability("deviceName""Android Emulator");
29
30            capabilities.SetCapability("automationName""Appium");
31
32            capabilities.SetCapability("platformName""Android");
33
34            capabilities.SetCapability("platformVersion""6.0"); //可以根据自己的模拟器版版本进行修改。
35
36            capabilities.SetCapability("appPackage""com.android.calculator2"); //安卓自带计算器
37
38            capabilities.SetCapability("appActivity"".Calculator");
39
40
41
42            RemoteWebDriver wd = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities);
43
44            try
45
46            {
47
48                var result = wd.FindElementById("digit_5");
49
50                result.Click();
51
52            }
53
54            catch (Exception ex)
55
56            {
57
58                Console.WriteLine(ex.Message);
59
60            }
61
62            finally { wd.Quit(); }
63
64
65
66        }
67
68
69
70    }
71
72}
73
74原文:https://blog.csdn.net/Stephen_shijun/article/details/83994212 
复制代码

转载于:https://juejin.im/post/5bea64616fb9a049ef261f73

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

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

相关文章

git 可视化工具_Git的基本使用(二)

通过前文Git的基本使用(一)的学习,相信大家对如何将iOS项目通过Git传到GitHub账户上有了一个基本的了解,其过程是相对繁琐和容易出错的。本文将告诉大家借助工具来帮助我们实现这些操作,并对前文进行进一步补充。一、两个软件Visual Studio C…

小米8配哪个版本的MIUI?

小米8之前我是忠实的魅粉,魅族手机用过M8,MX3,note5,MX6 pro。 魅族真的是被联发科的cpu坑了,一核有难,八核围观。 入手小米8,miui是9,一路跟着系统自动更新,更新到了12。…

3D设计桌面云

榕力3D设计桌面云方案,为使用GPU高负载应用的设计师们提供强大支持,如3D建模、光线追踪、渲染计算等领域,带来极致流畅的3D设计桌面体验,同时提升工作效率、可管理性和安全性。 3D设计桌面云方案满足了工业客户在专业设计场景中的…

PDF图片文字识别

工具 adobe acrobat XI PRO 没有安装该软件的,需下载安装,有了此软件,pdf随意改,必备! 步骤 1.打开pdf文件,点击工具---文本识别---在本文件中 2.选择“所有页面”,点击“编辑” 3.选择语言&a…

python中import的作用_python使用import报错是什么原因

在练习Python中package的相对导入时,即from . import XXX 或者from .. import XXX 有时会遇到这样两个错误:SystemError: Parent module not loaded, cannot perform relative import 和ValueError: attempted relative import beyond top-level packag…

win10卓越性能模式,提升电脑性能

Win10隐藏了一个电源模式“卓越性能”,是比“高性能”模式更强性能的电源模式。 这个模式开启后,电脑到底有没有变快呢?心理上是快了。 开启步骤 1.鼠标移到开始按钮图标上,别动!!!&#xff…

Redis Sentinel 模拟故障迁移

什么是redis sentinel 参考文档:https://redis.io/topics/sentinel 简单的来说,就是Redis Sentinel 为redis 提供高可用性,主要体现在下面几个方面:1.监控:redis sentinel会不间断的监控主服务器和从服务器是否正常工作2.通知:当出现问题时,…

python2中文输出代码_解决vscode python print 输出窗口中文乱码的问题

解决vscode python print 输出窗口中文乱码的问题 发布时间:2020-09-17 23:53:25 来源:脚本之家 阅读:119 一、搭建 python 环境 在 VSC 中点击 F1 键,弹出控制台,输入 ext install 界面左侧弹出扩展窗格,输…

十二赞日志收集与报警系统一览

先快速介绍一下十二赞的日志收集系统:十二赞的日志收集系统,分为两块,一块是线上系统的各种报错、异常的日志收集,主要是各种线上代码运行期间产生,我们称之为log-collect,一块是用户行为操作的日志收集&am…

招标投标法(摘录)

黑色:原文 红色:重点 蓝色:博主批注 第三条 在中华人民共和国境内进行下列工程建设项目: (一〉大型基础设施、公用事业等关系社会公共利益、公众安全的项目; ( 二〉全部或者部分使用国有资…

erp生产管理系统流程_企业生产管理好帮手——ERP智能管理系统

ERP企业管理软件是为企业决策层及员工提供决策运行手段的管理平台。在生产制造制造业中,尽管加工早已用于机械自动化,但在仓库管理、人工管理工作,还必须erp公司智能管理系统协助管理方法。erp公司管理软件是公司供应链管理的综合性管理软件&…

神经网络的基本工作原理

神经网络的基本工作原理 一、总结 一句话总结:先给一个初始值,然后依赖正确值(真实值)进行修复模型(训练模型),直到模型和真实值的误差可接受 初始值 真实值 修复模型 1、神经网络由基本的神经元…

政府采购法(摘录)

黑色:原文 红色:重点 蓝色:博主批注 第七条 政府采购实行集中采购和分散采购相结合。集中采购的范围由省级以上人民政府公布的集中采用目录确定。 属于中央预算的政府采用项目,其集中采用目录由国务院确定并公布;属…

jsonrpc aria2_抛弃迅雷,Aria2 新手入门

迅雷已经用了 10 年,一直把它看作是速度最快也最方便的下载工具。迅雷会员也是我必续的服务。但,迅雷堕落了。thunder: 迅雷专属链接越来越少,基本都是磁力、BT 的天下迅雷会员加速不再给力,大量资源速度为 0。会员虽然还有一年多…

《招标投标法》和《招标投标实施条例》有什么关系?

招投标法是1999年颁布2000年正式执行的我国第一部关于招投标方面的法律,对我国的招投标起到指导性作用,而实施条例是于2012年2月1日正式执行的法律法规,是根据招投标法颁布10年以来一些不足做了进一步的补充和说明,更具有可操作性…

pytorch 测试每一类_2D-UNet脑胶质瘤分割BraTs + Pytorch实现

2D-UNet讲解玖零猴:U-Net与FCN的区别医学表现网络详解创新​zhuanlan.zhihu.comBraTs数据准备数据来源本文用的训练集和验证集均来自BraTs2018的训练集(其中HGG:210个病人,LGG:75个病人)但由于BraTs只公开训练集数据,没有测试集数据,如果在训练集中再拆一部分用来作…

电商必备6款商品详情数据采集,一键批量下载淘猫拼和1688宝贝信息和链接!

当我们分析竞品以及选款复制时,往往需要先将商品信息采集下载下来,然而一个个去寻找商品并手动下载,显然是不现实的。 特别是做无货源店群的卖家,可能需要在不同平台采集商品信息,那么就需要用到适用不同平台的商品采…

合同法摘录

黑色:原文 红色:重点 蓝色:博主批注 第十条 当事人订立合同,有书面形式、口头形式和其他形式 。 (口头形式和其他形式,没听过吧) 第十一条 书面形式是指合同书、信件和数据电文&#xff0…

vue.js的项目实战

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文由蔡述雄发表于云社区专栏 需求背景 组件库是做UI和前端日常需求中经常用到的,把一个按钮,导航,列表之类的元素封装起来,方便日常使用,调用方…

c++ 输出二进制_Python入门3print格式化输出的几种方法

接《Python入门2》print格式化输出的几种方法⒂格式化输出举例【例】str_name"小明"num_age15print("我叫%s,今年%d岁"%(str_name,num_age))#注意print的前后两部分用%间隔,不是逗号,后面的输出列表加小括号【例】str&qu…