51Testing软件测试论坛

标题: UIAutomator测试工具的配置以及使用 [打印本页]

作者: 橙子0012    时间: 2018-4-17 14:20
标题: UIAutomator测试工具的配置以及使用
运行系统条件:
1)Android Studio
2)系统版本:sdk 要求api18以及以上

配置:
1)配置build.gradle(app目录下的):加入引用库

androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.0'
androidTestCompile 'com.android.support:support-annotations:23.2.0'

2)build.gradle(app目录下的)packagingOptions是与compileOptions、compileSdkVersion平级关系的。
android { packagingOptions { exclude 'LICENSE.txt' } }

创建测试工程:
1)在 androidTest 目录下创建一个新的测试的java类,名字随意,我这里起名字为MyFirstTest,需要
注意的是必须继承自InstrumentationTestCase。
2)Alt+Insert添加必要的方法,比如下图的1,、2。其中2为必须要实现的方法,这里可以获取设备实例。

3、查看Launcher UI
连接你的Android设备到电脑上,点击home按键,进入主界面。
打开你安装Android SDK的目录,进入到 tools目录下,点击 uiautomatorviewer.bat 。启动 UI Automa
ter Viewer后看到如下界面:

鼠标移动到不同位置,会有不同选中的框,然后右侧显示这个控件的详细信息。一般关注class、text、
content-desc、这些属性,后面需要根据这些找到具体的控件。
下面是测试代码,具体语法参考:http://www.tuicool.com/articles/RVzIrm
http://wenku.baidu.com/link?url= ... KGRzxkLz4nYs3vSMliH
3QR2dOnR3d9pPmpC6weVTF4CkjvEMauOsVBbOXJQlHzBlKpqm-PaG
编写完后,直接在java文件右键,然后run这个test文件即可。

package com.tomtop.shop;

  1. import android.support.test.uiautomator.By;
  2. import android.support.test.uiautomator.UiDevice;
  3. import android.support.test.uiautomator.UiObject2;
  4. import android.support.test.uiautomator.Until;
  5. import android.test.InstrumentationTestCase;

  6. /**
  7. * author:   tc
  8. * date:     2016/4/12 & 16:40
  9. * version    1.0
  10. * description
  11. * modify by
  12. */
  13. public class MyFirstTest extends InstrumentationTestCase {
  14.     private UiDevice device;
  15.     private static final String TAG = MyFirstTest.class.getSimpleName();

  16.     @Override
  17.     public void setUp() throws Exception {
  18.         super.setUp();
  19.         device = UiDevice.getInstance(getInstrumentation());
  20.     }

  21.     public void testClick() throws Exception {
  22.         device.wait(Until.hasObject(By.clazz("android.widget.TextView").text("TOMTOP")), 3000);
  23.         UiObject2 appsButton = device.findObject(By.clazz("android.widget.TextView").text("TOMTOP"));
  24.         appsButton.click();
  25.         Thread.sleep(20000);
  26.         clickNextByText("Tablet PC & Cellphone");
  27.         Thread.sleep(20000);
  28.         clickNextByText("Sort");
  29.         clickNextByText("Review");
  30.         clickNextByText("Apply");
  31.         Thread.sleep(20000);
  32.         clickNextByDesc("imageview1");
  33.         Thread.sleep(20000);
  34.         clickNextByText("Buy Now");
  35.         Thread.sleep(10000);
  36.         clickNextByText("Continue");
  37.         Thread.sleep(15000);
  38.         clickNextByText("1");
  39.         device.wait(Until.hasObject(By.clazz("android.widget.EditText")), 3000);
  40.         UiObject2 btn = device.findObject(By.clazz("android.widget.EditText")
  41.                 );
  42.         btn.setText("10");
  43.         Thread.sleep(2000);
  44.         clickNextByText("Confirm");
  45.         Thread.sleep(2000);
  46.         clickNextByText("Check Out");
  47.         Thread.sleep(15000);


  48.     }

  49.     private void clickNextByText(String text) throws InterruptedException {
  50.         device.wait(Until.hasObject(By.text(text)), 3000);
  51.         UiObject2 btn = device.findObject(By.text
  52.                 (text));
  53.         btn.click();
  54.         Thread.sleep(1000);
  55.     }
  56.     private void clickNextByDesc(String text) throws InterruptedException {
  57.         device.wait(Until.hasObject(By.desc(text)), 3000);
  58.         UiObject2 btn = device.findObject(By.desc
  59.                 (text));
  60.         btn.click();
  61.         Thread.sleep(1000);
  62.     }
  63. }
复制代码



作者: 梦想家    时间: 2018-5-9 16:26





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2