Appium自动化元素定位

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

 Appium自动化元素定位_第1张图片

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

或者

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

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

 Appium自动化元素定位_第2张图片

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

 Appium自动化元素定位_第3张图片

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

或者

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

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

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

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

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

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

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

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

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

findElement(MobileBy.AndroidUIAutomator("new UiSelector().className(\"android.widget\")"));
findElementByAndroidUIAutomator(“new UiSelector().className(\“className\”)”);
findElementByAndroidUIAutomator(“new UiSelector().classNameMatches (\“regex\”)”);

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(\"邮箱\")"));
findElementByAndroidUIAutomator(“new UiSelector().text(\“text\”)”)
findElementByAndroidUIAutomator(“new UiSelector().textContains (\“text\”)”)
findElementByAndroidUIAutomator(“new UiSelector().textMatches (\“regex\”)”)
findElementByAndroidUIAutomator(“new UiSelector().textStartsWith(\"登录\")”;

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

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

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

ids.get(1).click();

6、可以指定查找到的第几个,红色部分括号里写上索引即可

driver.findElementByAndroidUIAutomator("new UiSelector().text(\"登录\").instance(1)");

7、滑动到指定文本的元素

driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).getChildByText(new UiSelector().className(\"android.widget.TextView\"), \"你想滑动到的元素字符串 \")");

8、根据元素其他属性进行定位

findElementsByAndroidUIAutomator("new UiSelector().resourceId(\"android:id/checkbox\").checked(false)");

 

你可能感兴趣的:(Appium自动化)