Appium自动化测试之元素定位方法

前言

appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,本文以python语言为示例介绍appium中的元素定位方法,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来

一、通过id定位

resource-id也称为id,resource-id是唯一的

`

等待元素可见,然后点击“我的”按钮

WebDriverWait(driver, 20).until(EC.visibility_of_element_located((MobileBy.ID, 'com.vnovel.webnovel.videonovel.webstories.freenovel:id/activity_main_mine')))
driver.find_element(MobileBy.ID, 'com.vnovel.webnovel.videonovel.webstories.freenovel:id/activity_main_mine').click()
`

二、通过className定位

元素定位,注意我这里的写法,用的是find_elements_by_class_name,另外还要加索引

agree_continue_class = "android.widget.Button"
WebDriverWait(driver, 10, 1).until(EC.visibility_of_all_elements_located((MobileBy.CLASS_NAME, agree_continue_class)))
driver.find_elements_by_class_name(agree_continue_class)[1].click()

三、通过AccessibilityId定位

AccessibilityId也称为content-desc

`

元素定位

tiku_AccessibilityId = "题库"
WebDriverWait(driver, 10, 1).until(EC.visibility_of_all_elements_located((MobileBy.ACCESSIBILITY_ID, tiku_AccessibilityId)))
driver.find_element_by_accessibility_id(tiku_AccessibilityId).click()
`

四、通过xpath定位

精准匹配


loc = '//*[contains(@text,"{}")]'.format("获取验证码") WebDriverWait(driver,10,0.02).until(EC.presence_of_element_located((MobileBy.XPATH,loc))) driver.find_element(MobileBy.XPATH,loc).click()
模糊匹配

`

元素定位

loc = "//*[contains(@text, '验证码')]"
WebDriverWait(driver, 10, 1).until(EC.visibility_of_element_located((MobileBy.XPATH, loc)))
driver.find_element(MobileBy.XPATH,loc).click()
`

五、通过Android UIAutomator定位

android uiautomator原理是通过android 自带的android uiautomator的类库去查找元素,其实和appium的定位一样,或者说他比appium的定位方式更佳多以及更佳适用,它也支持id、className、text、模糊匹配等进行定位。

1、根据text属性为“手机号”查找元素。

`

点击手机号

WebDriverWait(driver, 20).until(EC.visibility_of_element_located((MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("手机号")')))
driver.find_element(MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("手机号")').click()
`
2、text模糊定位

模糊定位故名思义,通过text的部分信息就能够进行定位,我们直接看代码:
driver.find_element(MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().textContains("手机")').click()

3、resourceID定位

resourceId定位和appium封装好的id定位是一样的,只是这里将写法变成了uiautomator的写法而已,看下面代码
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.vnovel.webnovel.videonovel.webstories.freenovel:id/activity_login_phone_username")') ele.send_keys('234')
4、className定位

通过调用android uiautomator使用className进行定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")')
ele.send_keys('234')

以上就是最常用的定位方法,其他更全面的定位方法可以自行百度学习,方法与selenium WEB定位方法都是一致的

posted on 2022-02-23 10:00  Tester十点半  阅读(677)  评论(0编辑  收藏  举报

导航