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

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

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

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

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

九、下载、导入虚拟机

由于我的环境没有网络因此需要下载离线Genymobile虚拟机包(XX云盘中有),如果有网络可以通过“Add”新建虚拟机;

下载后使用“OracleVMVirtualBox”将该虚拟机导入,导入后在Genymobile工具中即可看到该模拟器。

一十、Eclipse打开模拟器

在Eclipse中点击快捷菜单中的Genymobile图标或按钮Ctrl+6即可打开模拟器选择窗口,选中某一模拟器,点击Start即可启动该模拟器。

一十一、导入Appium支撑包(java-client-3.3.0.jar)

使用Maven库导入appium支撑java-client包,在POM.xml文件中输入以下内容:

<

dependency>

<

groupId>

io.appium<

/groupId>

artifactId>

java-client<

/artifactId>

version>

3.3.0<

/version>

<

/dependency>

注:

如果是手动下载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坐标及依赖代码如下:

projectxmlns="

http:

//maven.apache.org/POM/4.0.0"

xmlns:

xsi="

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

//maven.apache.org/POM/4.0.0

//maven.apache.org/xsd/maven-4.0.0.xsd"

>

<

modelVersion>

4.0.0<

/modelVersion>

org.wltea.ik-analyzer<

ik-analyzer<

3.2.8<

name>

IKAnalyzer3<

/name>

description>

Adictionaryandgrammar-basedChinesesegmenter<

/description>

dependencies>

org.apache.lucene<

lucene-core<

3.0.3<

optional>

true<

/optional>

org.apache.solr<

solr-core<

1.4.1<

junit<

3.8.2<

scope>

test<

/scope>

lucene-analyzers<

lucene-smartcn<

/dependencies>

/project>

第三步:

打开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库中,而是通过下面的配置引入,效果和上面的差不多:

org.wltea<

IKAnalyzer<

systemPath>

C:

\Users\yangping\Desktop\a\IKAnalyzer3.2.8.jar<

/systemPath>

一十二、获取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

通过name定位,打开UIAutomatorViewer,nodedetail下找到标签是“text”—>

“购物车”

driver.findElementByName("

购物车"

FindElementByAccessibilityId

针对谷歌浏览器打开的XX首页,搜索按钮的定位:

通过AccessibilityId定位,打开UIAutomatorViewer,nodedetail下找到标签是“content-desc”—>

“XX一下”

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<

WebElement>

driver;

@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"

deviceName"

AndroidEmulator"

//设置安卓系统版本

platformVersion"

4.4.2"

//设置apk路径

//capabilities.setCapability("

app"

app.getAbsolutePath());

//设置app的主包名和主类名

appPackage"

com.android.contacts"

appActivity"

.activities.PeopleActivity"

//初始化

driver=newAndroidDriver<

(newURL("

//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("

id/menu_add_contact"

//获取所有EditText元素

List<

textFieldsList=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"

//点击完成

id/save_menu_item"

//验证是否新增成功

Assert.assertTrue(driver.findElement(By.id("

id/name"

)).getText().equals("

dongkang14"

//导出通讯录

publicvoiddaoChu(){

//更多按钮

imageButtonList=driver.findElementsByClassName("

android.widget.ImageButton"

imageButtonList.get(0).click();

//点导入/导出

driver.findElementsByClassName("

).get(4).click();

//点击导出通讯录

textViewList=driver.findElementsByClassName("

textViewList.get

(2).click();

//确定导出

android:

id/button1"

//滑动状态栏,查看通知信息

driver.swipe(0,0,100,100,2);

//验证是否导出成功

Assert.assertTrue(driver.findElementsByClassName("

).get

(2).getText().contains("

已顺利导出"

@AfterTest

publicvoidtearDown()throwsException{

driver.

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

当前位置:首页 > PPT模板 > 自然景观

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

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