Appium自动化元素定位

1. 通过id定位,id就是我们看到元素属性信息resource-id的值,如下图

 

AndroidElement edit_text=driver.findElementById("email_text");

或者

AndroidElement edit_text=driver.findElement(By.id("email_text"));

2. 通过元素className定位,className对应的值就是我们看到的元素属性信息class的值;但要注意的是:可能一个页面有多个相同class的值

 

AndroidElement edit_text=driver.findElement(By.className("android.widget.TextView"));

或者:

AndroidElement edit_text=driver.findElementByClassName("android.widget.TextView");

如果此页面有多个相同的class值,使用get()指定要使用那个索引的是:

AndroidElement edit_text=driver.findElements(By.className("android.widget.TextView")).get(1);

或者:

AndroidElement edit_text=driver.findElementsByClassName("android.widget.TextView").get(1);

3. 通过元素的accessibility id定位,accessibility id对应的值就是我们看到的元素属性信息中content-desc

 

AndroidElement edit_text=driver.findElementsByAccessibilityId("Unlock");

或者

AndroidElement edit_text=driver.findElement(MobileBy.AccessibilityId("Unlock"));

4. 通过AndroidUiautomator定位元素,对于这种定位元素的方式实质上是借用的uiautomator这个工具的定位方式来进行的,关于uiautomator本身也是一个安卓的自动化测试工具,下面的例子针对前三种均使用Androiduiautomator的定位方式进行实现:

1)uiautomator工具通过id定位的语句是:

new UiSelector().resourceId(\"com.zhihu.android:id/edit_text\")

那么对于appium要使用这种定位,需要将其作为字符串参数传递给下面的方法

AndroidUiautomator edit_text=

driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().resourceId(\"com.zhihu.android:id/edit_text\")"));

2)uiautomator工具通过class属性定位的语句是:

new Uiselector().className(“audroid.widget.EditText”);

那么对于appium要使用这种定位,需要将其转换成字符串参数传递给下面的方法

AndroidUiautomator edit_text=

driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().className(\"android.widget.EditText\")"));

3)uiautomator工具通过content-desc属性定位的语句是:

new UiSelector().description(“Unlock”);

那么对于appium要使用这种定位,需要将其转换成字符串传递给下面的方法

AndroidUiautomator edit_text=

driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().description(\"Unolck\")"));

4)uiautomator工具通过text属性定位的语句是:

new UiSelector().text(“邮箱”);

那么对于appium要使用这种定位,需要将其作为字符串参数传递给下面的方法

AndroidUiautomator edit_text=

driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector.text(\"邮箱\")"));

5. 如果选取的定位信息的值在整个界面存在多个时,可以使用driver.findElements方法来定位,如相同的id的元素有多个时,我们要操作第二个,代码如下

List<AndroidElement> ids=driver.findElements(By.id("title"));

//点击第二个,通过list集合的索引去找定位到多个元素的某一个元素(索引从0开始,所以点击第2个元素的索引是1

ids.get(1).click();

猜你喜欢

转载自blog.csdn.net/jffhy2017/article/details/68923115