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定位方法都是一致的
本文来自博客园,作者:{Tester十点半},转载请注明原文链接:https://www.cnblogs.com/jialeliu/p/15926020.html