Appium+Eclipse+Genymotion模拟器安装部署.docx

上传人:b****3 文档编号:5444181 上传时间:2022-12-16 格式:DOCX 页数:24 大小:479.03KB
下载 相关 举报
Appium+Eclipse+Genymotion模拟器安装部署.docx_第1页
第1页 / 共24页
Appium+Eclipse+Genymotion模拟器安装部署.docx_第2页
第2页 / 共24页
Appium+Eclipse+Genymotion模拟器安装部署.docx_第3页
第3页 / 共24页
Appium+Eclipse+Genymotion模拟器安装部署.docx_第4页
第4页 / 共24页
Appium+Eclipse+Genymotion模拟器安装部署.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

Appium+Eclipse+Genymotion模拟器安装部署.docx

《Appium+Eclipse+Genymotion模拟器安装部署.docx》由会员分享,可在线阅读,更多相关《Appium+Eclipse+Genymotion模拟器安装部署.docx(24页珍藏版)》请在冰豆网上搜索。

Appium+Eclipse+Genymotion模拟器安装部署.docx

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文件中输入以下内容:

io.appium

java-client

3.3.0

注:

如果是手动下载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">

4.0.0

org.wltea.ik-analyzer

ik-analyzer

3.2.8

IKAnalyzer3

Adictionaryandgrammar-basedChinesesegmenter

org.apache.lucene

lucene-core

3.0.3

true

org.apache.solr

solr-core

1.4.1

true

junit

junit

3.8.2

test

org.apache.lucene

lucene-analyzers

3.0.3

test

org.apache.lucene

lucene-smartcn

3.0.3

test

第三步:

打开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包,如下:

org.wltea.ik-analyzer

ik-analyzer

3.2.8

当然你也可以不将IKAnalyzer3.2.8.jar发布到您本地的Maven库中,而是通过下面的配置引入,效果和上面的差不多:

org.wltea

IKAnalyzer

3.2.8

C:

\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{

privateAndroidDriverdriver;

@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(newURL("http:

//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元素

ListtextFieldsList=driver.findElementsByClassName("android.widget.EditText");

//输入姓名

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(){

//更多按钮

ListimageButtonList=driver.findElementsByClassName("android.widget.ImageButton");

imageButtonList.get(0).click();

//点导入/导出

driver.findElementsByClassName("android.widget.TextView").get(4).click();

//点击导出通讯录

ListtextViewList=driver.findElementsByClassName("android.widget.TextView");

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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1