appium元素定位

Posted hellowcf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium元素定位相关的知识,希望对你有一定的参考价值。

通过id定位

安卓里面的id即为resource-id

driver.findElementById("com.tencent.mm:id/do")

或者

WebElement element = driver.findElement(By.id("com.tencent.mm:id/do"));

 

通过name定位

一般text为name

WebElement el = driver.findElement(By.name("昵称"));

 

通过classname定位

Classname即为uiautomator里面的class信息

WebElement el = driver.findElement(By.ClassName("android.widget.TextView"));

 

通过xpath定位

在appium中xpath定位元素,执行很慢,效率比较低,很少用

WebElement el = driver.findElement(By.xpath("//android.widget.Button[@index=‘1‘]"));

 

通过accessibilityID定位

在uiautomator中的content-desc信息为该定位元素

WebElement el = driver.findElementByAccessibilityId("sharebutton");

 

通过androiduiautomator定位元素

AndroidUIAutomator是一个强有力的元素定位方式,它是通过Android UIAutomator类库去找元素,
findElement(By.AndroidUIAutomator(String UIAuto));

可以选项id,classname,name,description作为传入的字符串

WebElement el = driver.findElementByAndroidUIAutomator("new UiSelector().description(\"sharebutton\")");

Text属性的方法,uiautomator中的text信息

driver.find_element_by_android_uiautomator(‘new UiSelector().text("Custom View")‘).click()         #text
driver.find_element_by_android_uiautomator(‘new UiSelector().textContains("View")‘).click()        #textContains
driver.find_element_by_android_uiautomator(‘new UiSelector().textStartsWith("Custom")‘).click()    #textStartsWith
没有endswith方法
driver.find_element_by_android_uiautomator(‘new UiSelector().textMatches("^Custom.*")‘).click()    #textMatches
使用正则表达式必须完全匹配,比如上面使用”^Custom”是不正确的

classname属性的方法

#className
driver.find_element_by_android_uiautomator(‘new UiSelector().className("android.widget.TextView").text("Custom View")‘).click()    
#classNameMatches
driver.find_element_by_android_uiautomator(‘new UiSelector().classNameMatches(".*TextView$").text("Custom View")‘).click()   

resourceID属性的方法

#resourceId
driver.find_element_by_android_uiautomator(‘new UiSelector().resourceId("android:id/text1")‘)   
#resourceIdMatches
driver.find_element_by_android_uiautomator(‘new UiSelector().resourceIdMatches(".*id/text1$")‘)

通过contentdescription定位

driver.find_element_by_android_uiautomator(‘new UiSelector().description("Custom View")‘).click()         
driver.find_element_by_android_uiautomator(‘new UiSelector().desctiptionContains("View")‘).click()        
driver.find_element_by_android_uiautomator(‘new UiSelector().descriptionStartsWith("Custom")‘).click()   
driver.find_element_by_android_uiautomator(‘new UiSelector().descriptionMatches("^Custom.*")‘).click()   

元素的其他属性的方法

driver.find_element_by_android_uiautomator(‘new UiSelector().clickable(true).text("Custom View")‘).click() 

通过伪xpath方法

通过UiSelector.fromParent或UiObject.getFromParent方法

快速查找已知元素的父元素的兄弟信息

他们的功能是一样的

Getfromparent方法

  1. save =  new UiObject(new UiSelector().text("Save"));  
  2. assertEquals(save.getText(),"Save");  
  3. delete = save.getFromParent(new UiSelector().text("Delete"));  
  4. assertEquals(delete.getText(),"Delete"); 

promparent方法

  1. delete = new UiObject(new UiSelector().text("Save").fromParent(new UiSelector().text("Delete")));  
  2. assertEquals(delete.getText(),"Delete");  

通过UiSelector.childSelector或UiObject.getChild方法

快速查找在已知元素的子元素

Getchild方法

  1. UiObject parentView = new UiObject(new UiSelector().className("android.view.View"));  
  2. save = parentView.getChild(new UiSelector().text("Save"));  
  3. assertEquals(save.getText(),"Save");  

childselector方法

  1. save = new UiObject(new UiSelector().className("android.view.View").childSelector(new UiSelector().text("Save")));  
  2. assertEquals(save.getText(),"Save"); 




以上是关于appium元素定位的主要内容,如果未能解决你的问题,请参考以下文章

六 APPIUM Android 定位方式

appium 元素定位

appium 元素定位

appium 怎么跳转页面定位元素

APPIUM Android 定位方式

在 Android 应用中使用 Appium 定位元素后,如何水平滑动?