Appium+Eclipse+Genymotion模拟器安装部署.docx
- 文档编号:5444181
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:24
- 大小:479.03KB
Appium+Eclipse+Genymotion模拟器安装部署.docx
《Appium+Eclipse+Genymotion模拟器安装部署.docx》由会员分享,可在线阅读,更多相关《Appium+Eclipse+Genymotion模拟器安装部署.docx(24页珍藏版)》请在冰豆网上搜索。
Appium+Eclipse+Genymotion模拟器安装部署
Appium环境部署及实例展示
一、环境说明
自己闲来无事整理一下Appium测试环境及几个实例,供初学者学习;
环境说明:
Appium+Genymotion+Eclipse+TestNG.
注:
Eclipse及JDK的安装及说明不再在此阐述,XX有很多资料自己阅读。
二、下载Appium
下载AppiumForWindows,双击运行Appium.exe文件,打开主窗口,点击右上角“launch”按钮,启动AppiumServer服务。
三、下载SDK
下载SDK,并配置环境变量,详见XX。
四、下载ADT
下载ADT包,打开EclipsehelpInstallNewSoftWare,打开“Install”窗口,点击“Add”按钮,打开新增窗口;在新增窗口“Name”中输入名称(如:
ADT),点击“Location”后的“Archive”,打开文件选择窗口,选择下载的ATD包文件,点击“OK”。
添加成功后在Eclipse主窗口快捷菜单中会出现Android的几个图标。
五、添加模拟器
打开Eclipse后点击WindowAndroidVirtualDeviceManager打开AVD管理窗口,点击”Create”按钮,输入参数保存,新增成功;
新增成功后选中该AVD,点击”Start”按钮,启动模拟器。
注:
以上添加的模拟器在使用过程中会非常慢,因此使用了第三方的一种模拟器(Genymotion),该模拟器运行速度相对较快,运行稳定,以下是详细安装说明。
六、下载安装Genymotion模拟器
到官网下载Genymotion安装文件后安装;
注意:
在官网下载时需要注册用户名密码,注册后切记要把用户名密码记住,因为安装完成后还需要登录。
七、配置GenymotionSDK路径
安装成功后在本地打开运行,点击“Setting”打开设置窗口,点击”ADB”标签页,点击“UsecustomAndroidSDKtools”单选框,点击“Browe”打开浏览窗口,选择本地SDK路径(选到tools路径的上一级),点击OK。
八、在Eclipse配置Genymotion
在GenyMotion官网中下载EclipseGenymotion插件文件
(com.genymobile.genymotion.lib_1.0.4.201503031034.jar、.com.genymobile.genymotion.ide.eclipse.plugin_1.0.4.201503031034.jar,注:
下载两个jar时一定要确保版本及时间一致)下载后放到Eclipse安装路径下的“plugins”路径中。
重启Eclipse后可以看到快捷菜单中显示了Genymotion的图标。
在Eclipse中点击WindowsPreferences菜单,打开Preferences窗口后,在左侧树中选择“GenymobileGenymotion”项,点击“Browser”,选择本地Genymobile安装路径下的“Genymotion”路径,点击确定。
九、下载、导入虚拟机
由于我的环境没有网络因此需要下载离线Genymobile虚拟机包(XX云盘中有),如果有网络可以通过“Add”新建虚拟机;下载后使用“OracleVMVirtualBox”将该虚拟机导入,导入后在Genymobile工具中即可看到该模拟器。
一十、Eclipse打开模拟器
在Eclipse中点击快捷菜单中的Genymobile图标或按钮Ctrl+6即可打开模拟器选择窗口,选中某一模拟器,点击Start即可启动该模拟器。
一十一、导入Appium支撑包(java-client-3.3.0.jar)
使用Maven库导入appium支撑java-client包,在POM.xml文件中输入以下内容:
注:
如果是手动下载java-client-3.3.0.jar包,也可将其配置到Maven库中,方法如下:
方法一、
Maven如何手动添加jar包到本地Maven仓库
ApacheMaven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。
基于项目对象模型(缩写:
POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
曾是Jakarta项目的子项目,现为独立Apache项目。
大家肯定遇到过想在pom文件中加入自己开发的依赖包,这些包肯定是不是在Maven仓库(http:
//repo1.maven.org/maven2/)的。
那我们怎么将那些不存在Maven仓库中的包加入到本地的Maven库中呢?
很简单。
这里以IKAnalyzer.jar包为例进行讲解。
第一步:
将IKAnalyzer.jar包存放在一个文件夹中,比如mylib文件夹
第二步:
建立一个IKAnalyzer.jar包相关的pom.xml文件,需要在pom.xml文件中定义其maven坐标及其相应的依赖代码即可,同样将pom文件存放在上述jar文件同一文件夹下,IKAnalyzer.jar坐标及依赖代码如下:
//maven.apache.org/POM/4.0.0" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation="http: //maven.apache.org/POM/4.0.0 http: //maven.apache.org/xsd/maven-4.0.0.xsd"> 第三步: 打开CMD,进入到mylib文件夹,运行下面的命令: mvninstall: install-file\ -Dfile=IKAnalyzer3.2.8.jar\ -DgroupId=org.wltea.ik-analyzer\ -DartifactId=ik-analyzer\ -Dversion=3.2.8\ -Dpackaging=jar 方法二、 这样你就可以将IKAnalyzer3.2.8.jar安装到您本地的Maven仓库中了,你可以根据你的实际情况修改上面的参数即可。 之后你可以在pom.xml文件中通过以下依赖在项目中引入自定义的jar包,如下: 当然你也可以不将IKAnalyzer3.2.8.jar发布到您本地的Maven库中,而是通过下面的配置引入,效果和上面的差不多: \Users\yangping\Desktop\a\IKAnalyzer3.2.8.jar 一十二、获取androidapp的Activity 有时候在appium的DesiredCapabilities中需要指定被测app的appActivity,下面的方法可能会对你有所帮助。 方法一 如有你有待测项目的源码,那么直接查看源码就好。 如果没有,那么请联系有源码的同学,这是推荐方法。 方法二 如果你没有代码,那么可以反编译该app。 这里将用到2个工具,分别是dex2jar和jd-gui。 你可以在这里下载目前为止的最新版本以及示例apk。 我们以工具包里的ContactManager.apk为例,简单介绍一下反编译的流程。 ∙1,重命名ContactManager.apk为ContactManager.zip并解压得到文件classes.dex; ∙2,解压dex2jar-0.0.9.15.zip,并从命令行进入该文件夹; ∙3,运行命令 d2j-dex2jar.batpath_to\classes.dex 在当前文件夹下得到classes-dex2jar.jar; ∙4,解压jd-gui-0.3.6.windows.zip得到文件jd-gui.exe; ∙5,使用jd-gui.exe打开classes-dex2jar.jar; 嗯,好了,可以尽情欣赏了。 上图。 上图所示的ContactManager就是待测app的mainactivity。 方法三 使用log查看大法(嗯,windows上没grep不幸福,好在有powershell的Select-String,可以拿来勉强一用),直接搬砖。 ∙a、启动待测apk ∙b、在DOS命令行中开启日志输出: adblogcat>D: /log.txt ∙c、关闭日志输出: ctrl+c ∙d、查看日志找寻: Displayedcom.mm.android.hsy/.ui.LoginActivity: +3s859ms appPackage=com.mm.android.hsy appActivity=.ui.LoginActivity 一十三、元素定位 下面主要是针对自己的了解和学习,简单的总结下关于AppiumnativeAPP上的一些元素定位方法的使用以及通过UIAutomatorViewer定位页面以后,如果从上面定位到你想使用的元素。 元素定位工具: ..\adt-bundle-windows-x86_64-20140321\sdk\tools\uiautomatorviewer.bat 启动"uiautomatorviewer.bat",我们能得到入下图所示的 点击红色图标,"DeviceScreenshotwithCompressedHierarchy"来获取当前模拟器或真机中当前的页面,从而能获取到对应的对象元素值,它也是分为Classname、Id、xpath等等来进行元素定位的,如果你熟悉Selenium,那么这块就不会陌生了,因为Appium仅仅只是在Selenium2的基础上封装了一层AppiumServer,方便来和移动端进行交互。 具体的元素定位,接下来继续总结。 以淘宝为例,来进行元素的定位。 打开UIAutomatorViewer Appium和Webdriver有一点区别在元素定位的方法上,见下面代码: //有点需要注意的是,findElementByAccessibilityId在Selenium上是不带这个方法的,所以只能用Appium提供的封装方法 driver.findElementByAccessibilityId("");//Selenium不带这个方法 //下面的形式Appium都能使用 driver.findElementByClassName("calssName"); driver.findElement(By.className("className")); FindElementByID 针对taobao,购物车的定位。 通过ID定位,打开UIAutomatorViewer,nodedetail下找到标签是“resource-id”—>”com.taobao.taobao: id/tv_title” driver.findElementById("com.taobao.taobao: id/tv_title"); FindElementByClassname 针对taobao,购物车的定位: 通过classname定位(一般情况下,最好不要通过classname来进行元素的定位,避免出现重复),打开UIAutomatorViewer,nodedetail下找到标签是“class”—>“android.widget.TextView” driver.findElementByClassName("android.widget.TextView"); FindElementByName 针对taobao,购物车的定位: 通过name定位,打开UIAutomatorViewer,nodedetail下找到标签是“text”—>“购物车” driver.findElementByName("购物车"); FindElementByAccessibilityId 针对谷歌浏览器打开的XX首页,搜索按钮的定位: 通过AccessibilityId定位,打开UIAutomatorViewer,nodedetail下找到标签是“content-desc”—>“XX一下” driver.findElementByAccessibilityId("XX一下"); 一十四、实例(通讯录管理工具) 以下是通讯录管理工具的实例(必须部署有TestNG): packageAndroidTest; importio.appium.java_client.android.AndroidDriver; import.URL; importjava.util.List; importjunit.framework.Assert; importorg.openqa.selenium.By; importorg.openqa.selenium.WebElement; importorg.openqa.selenium.remote.CapabilityType; importorg.openqa.selenium.remote.DesiredCapabilities; importorg.testng.annotations.AfterTest; importorg.testng.annotations.BeforeTest; importorg.testng.annotations.Test; publicclassContacts{ privateAndroidDriver @BeforeTest publicvoidsetUp()throwsException{ //设置apk的路径 /* *FileclasspathRoot=newFile(System.getProperty("user.dir"));File *appDir=newFile(classpathRoot,"apps");Fileapp=newFile(appDir, *"ContactManager.apk"); */ //设置自动化相关参数 DesiredCapabilitiescapabilities=newDesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME,""); capabilities.setCapability("platformName","Android"); capabilities.setCapability("deviceName","AndroidEmulator"); //设置安卓系统版本 capabilities.setCapability("platformVersion","4.4.2"); //设置apk路径 //capabilities.setCapability("app",app.getAbsolutePath()); //设置app的主包名和主类名 capabilities.setCapability("appPackage","com.android.contacts"); capabilities.setCapability("appActivity",".activities.PeopleActivity"); //初始化 driver=newAndroidDriver //127.0.0.1: 4723/wd/hub"),capabilities); } //新建联系人 @Test publicvoidcreateContact(){ //没有联系人时创建联系人 //driver.findElement(By.id("com.android.contacts: id/create_contact_button")).click(); //已创建过联系人后点新增联系人 driver.findElement(By.id("com.android.contacts: id/menu_add_contact")).click(); //获取所有EditText元素 List //输入姓名 textFieldsList.get(0).sendKeys("dongkang"); //输入电话 textFieldsList.get (1).sendKeys("11121252121"); //输入邮箱 textFieldsList.get (2).sendKeys("Test@"); //输入地址 textFieldsList.get(3).sendKeys("ZhongGuanCunRuanJianYuan"); //点击完成 driver.findElement(By.id("com.android.contacts: id/save_menu_item")).click(); //验证是否新增成功 Assert.assertTrue(driver.findElement(By.id("com.android.contacts: id/name")).getText().equals("dongkang14")); } //导出通讯录 @Test publicvoiddaoChu(){ //更多按钮 List imageButtonList.get(0).click(); //点导入/导出 driver.findElementsByClassName("android.widget.TextView").get(4).click(); //点击导出通讯录 List textViewList.get (2).click(); //确定导出 driver.findElement(By.id("android: id/button1")).click(); //滑动状态栏,查看通知信息 driver.swipe(0,0,100,100,2); //验证是否导出成功 Assert.assertTrue(driver.findElementsByClassName("android.widget.TextView").get (2).getText().contains("已顺利导出")); } @AfterTest publicvoidtearDown()throwsException{ driver.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Appium Eclipse Genymotion 模拟器 安装 部署
![提示](https://static.bdocx.com/images/bang_tan.gif)