Download presentation
Presentation is loading. Please wait.
1
Android—appium自动化测试
2
Android 自动化测试技术介绍 Android 自动化测试环境配置 Android 自动化测试spart.android Android 自动化测试UiAutomator Android 自动化测试控件操作 Android 自动化测试client端脚本编写
3
Android 自动化测试技术介绍
4
Android自动化测试技术介绍 Robotium Appium Uiautomator Nativedriver Monkeyrunner
5
Android自动化测试技术介绍 Robotium: http://code.google.com/p/robotium/
基于instrumentation实现,提供的接口可以满足大部分自动化需求,使用方法简单 支持手势、webview、截图等操作 支持Remote Control方式 支持ant、maven打包,与jenkins结合较好 资料丰富,社区活跃,更新频繁 签名问题,待测App和测试App必须使用相同签名 通过solo对象提供操作方法,面向对象方面较差 不支持跨应用测试,Android进程安全限制
6
Android自动化测试技术介绍 Appium: http://appium.io/ 跨架构,原生、混合以及Web移动应用。
跨平台,Android、ios和firefoxos。 跨语言,java、python、ruby、nodejs、php、Objective-C、JavaScript、C#等。 跨app,可以在多个APP之间交互。 支持多种测试框架,Junit、Rspec、PHPUnit、Nose、Mocha、Cucumber、Capybara和Vows等。 不依赖源代码。
7
Android 自动化测试环境配置
8
Android自动化测试appium环境配置
AppiumForWindows zip 解压缩到本地,执行Appium.exe 下载安装Android-SDK :
9
Android自动化测试appium环境配置
打开Eclipse提示导入Android-SDK
10
Android自动化测试appium环境配置
打开Eclipse 新建mven project
11
Android自动化测试appium环境配置
配置pom.xml文件
12
Android自动化测试appium环境配置
配置config.properties文件 在src/main/resources下新建一个config.properties文件。 加入以下配置项: version=4.2.2 classpathRoot=apps/personDoctor ----指定被测试apk路径 appDir=personDoctor.apk platformName=Android deviceName=ce6be444 device=appium app-package=com.pingan.papd app-activity=com.pingan.papd.ui.activities.LogoActivity 在mvn project工程下创建apps文件夹,在apps文件夹下以被测试apk名字创建子文件夹,把被测试apk放入文件夹内。
13
Android 自动化测试spart.android
14
Android 自动化测试spart.android
新增AndroidDriver类,继承AppiumDrver,用于更多自定义方法的封装。如新增:scrollTo 方法(持续更新中) 引入TestNG框架 自动清理无效的session 增加测试用例失败,自动截图 优化测试用例失败提示信息… 新增config.properties文件
15
Android 自动化测试spart.android使用
在上面环境配置中介绍到pom.xml配置中加入 <dependency> <groupId>com.pajk.test</groupId> <artifactId>spart.android</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> <version>3.0</version> <scope>test</scope>
16
Android 自动化测试UiAutomator
17
Android自动化测试UiAutomator对象及使用方法介绍
缺点:Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了; 以下我们将重点介绍以下二个对象 UiSelector对象 这个对象可以理解为一种条件对象,描述的是一种条件,经常配合UiObject使用,可以得到某个(某些)符合条件的控件对象。 checked(boolean val) ----描述一种check状态为val的关系。 className(className) ----描述一种类名为className的对象关系 clickable(boolean val) ----与checked类似,描述clickable状态为val的关系 description(desc)----设置Content-desc的值为desc/以desc开始/包含desc descriptionContains(desc) ----与description类似 focusable(boolean val) ----与checked类似 index(index) ---用当前对象在父对象集中的索引作为描述 packageName(String name) ----用包名作为条件描述 selected(val) ----描述一种选择关系 text(text) ----最为常用的一种关系,用控件上的文本即可找到当前控件,需要注意,所有使用text属性找到的控件,必须是英文的。也就是说,不支持通过中文查找控件! textContains(text) ----与text类似 textStartsWith(text) ----与text类似
18
Android自动化测试UiAutomator对象及使用方法介绍
UiObject对象 这个对象可以理解为控件的对象。 一般一个UiObject对象可以通过一下形式得到: UiObject mItem = new UiObject(new UiSelector().text("English")); 也就是配合一个UiSelector就可以得到一个控件。 click() ----点击控件 clickAndWaitForNewWindow() ----点击某个控件,并等待窗口刷新 longClick() ----长按 clearTextField() ----清除文本,主要针对编辑框 getChildCount() ----获取一个控件的集合 getPackageName() ----得到控件的包名 getSelector() ----得到当前控件的选择条件 getText() ----得到控件上的Text isCheckable(), isChecked(), isClickable(), isLongClickable(), isScrollable(), isScrollable(), isSelected() ----判断是否具备某个属性
19
Android自动化测试UiAutomator对象及使用方法介绍
UiScrollable对象 UiScrollable可以生成一个滚动动作的对象,其最大的作用就是可以实现滚动的查找某个元素。比如在“设置”菜单中,“语言和输入法”这个菜单比较靠下,需要滚动后才可以看到(找到),因此就用上了UiScrollable: UiScrollable settingItems = new UiScrollable( new UiSelector().scrollable(true)); UiObject languageAndInputItem = settingItems.getChildByText(new UiSelector().text("Language & input"), "Language & input", true); 上面的形式就可以在滚动中查找显示有“Language & input”的控件,也就是“语言和输入法”的设置项。
20
Android 自动化测试控件操作
21
Android自动化测试实际应用 1、可以使用Android自带的工具sdk\tools\uiautomatorviewer.bat来获取控件属性 2、也可以使用,我们自己的工具来获取相关 只需要在要获取页面的执行脚本中加入driver.generatePageElements();方法。 就会在工程目录下的\target\html\目录下生成elements.html 打开html会看到控件截图以及属性的显示,包括代码自动生成。
22
Android自动化测试实际应用 1、在appium中使用UIAutomator
String className = "android.widget.EditText"; List<WebElement> editList = driver.findElementsByAndroidUIAutomator("new UiSelector().className("+className+")"); editList.get(0).sendKeys(" "); editList.get(1).sendKeys("666666"); WebElement button = driver.findElementByAndroidUIAutomator("new UiSelector().className("+buttonName+").index(2)"); button.click(); 2、使用appium提供的方法 List<WebElement> textList = driver.findElementsByEditText(); driver.generatePageElements(); textList.get(0).sendKeys(" "); textList.get(1).sendKeys("666666"); driver.findElementByName("登录").click();
23
Android自动化测试实际应用 3、使用我们自动生成的代码
调用driver.generatePageElements();方法生成以下代码: @FindBy(xpath = "//android.widget.EditText[1]") private WebElement userText; @FindBy(xpath = "//android.widget.EditText[2]") private WebElement pwdTest; @FindBy(className = "android.widget.Button") private WebElement button1; userText.sendKeys(" "); pwdTest.sendKeys("666666"); button1.click(); 4、使用selenium的findElementsBy List<WebElement> editList = driver.findElements(By.className(className)); editList.get(0).sendKeys(" "); editList.get(1).sendKeys("666666"); WebElement button = driver.findElement(By.className(buttonName).name("登录")); button.click();
24
Android自动化测试实际应用 driver.scrollTo("外科");
driver.findElementByName("营养/体重管理").click();
25
Android自动化测试实际应用 中文输入解决办法:
安装appium提供的输入法 io.appium.android.ime-master.apk 在手机设置中选择语言/输入法,设置为当前输入法并且默认输入法 然后在appium中使用如下: WebElement editText = driver.findElementByEditText(); editText.sendKeys(“自动化测试”); 直接sendkeys中文即可。
26
Android 自动化测试client端脚本编写
27
Android自动化测试实施 1、
28
Android自动化测试实施 第五步:开始编写脚本 (例:) 脚本分两种模式: 第一种是以功能点为主,比如login和logout,这种方式重用性较高,便于管理,对功能划分比较清晰。 然后在实际测试脚本中调用组合case即可。
29
Android自动化测试实施 第二种方式,是把以测试案例为主,每个脚本就是一个完整的案例,功能点按照case要求直接写在脚本中。 这种方式的好处是与case贴合紧密,容易理解,但是维护起来不是很方便,重用度较低。 本次将会采用这两种结合的方式。
30
Q&A
Similar presentations