JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]

在WIndows系统上进行元素定位,建议使用这个工具,在Mac上建议用Appium Inspector

启动uiautomatorviewer.bat

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第1张图片
JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第2张图片

链接移动设备

  • 确认连接手机状态正常-》打开手机qq页面,让屏幕处于点亮状态
  • 点左上角安卓机器人按钮 Devices Screenshot 按钮刷新页面

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第3张图片

定位元素

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第4张图片

点击登录按钮代码实例

如上图所示,定位了登陆按钮,代码实例如下

 1 
 2 package testscript;/*
 3  * @FileName testscript.Test_Calculator:
 4  * @author davieyang
 5  * @create 2018-11-20 11:02
 6  */
 7 import org.apache.log4j.xml.DOMConfigurator;
 8 import java.net.MalformedURLException;
 9 import java.net.URL;
10 import java.util.concurrent.TimeUnit;
11 
12 import org.openqa.selenium.By;
13 import org.openqa.selenium.remote.DesiredCapabilities;
14 import org.testng.Assert;
15 import org.testng.annotations.BeforeTest;
16 import org.testng.annotations.DataProvider;
17 import org.testng.annotations.Test;
18 
19 import io.appium.java_client.android.AndroidDriver;
20 
21 public class Test_Calculator {
22     static {
23         //指定log4j配置文件为log4j.xml
24         DOMConfigurator.configure("log4j.xml");
25     }
26     AndroidDriver driver;
27     @BeforeTest
28     public void setUp() throws MalformedURLException{
29         DesiredCapabilities caps = new DesiredCapabilities();
30         // des.setCapability("app", "c:\\");
31         caps.setCapability("automationname", "Appium");
32         caps.setCapability("platformName", "Android");
33         caps.setCapability("platformVersion", "23");
34         caps.setCapability("udid", "WTKDU17105005171");
35         caps.setCapability("deviceName", "Honor");
36         caps.setCapability("appPackage", "com.tencent.qqpimsecure");//com.android.contacts
37         caps.setCapability("appActivity", "com.tencent.server.fore.QuickLoadActivity");//.activities.PeopleActivity
38         caps.setCapability("appWaitActivity", "com.tencent.server.fore.QuickLoadActivity");
39         caps.setCapability("unicodeKeyboard", "True");
40         caps.setCapability("resetKeyboard", "True");
41         caps.setCapability("newCommandTimeout", "15");
42         caps.setCapability("nosign", "True");
43         driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),caps);
44         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
45     }
46     @Test
47     public void add() {
48         driver.findElement(By.xpath("com.tencent.mobileqq:id/btn_login")).click();
49     }

元素定位方式及语法

Finding Elements By ID

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第5张图片
WebElement digit_5 = driver.findElement(By.id("com.android.calculator2:id/digit5"));

Finding Elements By Name

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第6张图片
WebElement delete = driver.findElement(By.name("DELETE"));

Finding Elements By CLASSNAME

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第7张图片

WebElement editBox = driver.findElement(By.className("android.widget.EditText"));
 
If the same class is used for multiple elements, then we need to select an element on the basic of indexing. For example:
 
List<WebElement>editBox = driver.findElements(By.className("android.widget.Button"));
 
editBox.get(1).click();

Finding Elements By AccessibilityID

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第8张图片
WebElement plusSign=driver.findElementByAccessibilityId("plus");

Finding Elements By AndroidUIAutomator

//findElement(By.AndroidUIAutomator(String UIAuto));
 
WebElement equal = driver.findElementByAndroidUiAutomator("new UiSelector().resourceId(\"com.android.calculator2:id/equal\")")
 
WebElement equal = driver.findElementByAndroidUiAutomator("new UiSelector().description(\"equals\")");

其他定位方式

JavaApp自动化测试系列[v1.0.0][uiautomatorviewer元素定位]_第9张图片

你可能感兴趣的:(uiautomator,App元素定位,安卓App元素定位)