• 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定位方法都是一致的

  • 相关阅读:
    MyCat 数据库读写分离
    python 网络编程-05 socketserver
    python 网络编程-04 文件的传输
    python 网络编程-03 粘包问题及处理
    常用模块-01getopt
    js获取自动获取本电脑IP
    js变态需求
    js正则不能输入中文和英文
    禁止输入中文
    手机号3-4-5
  • 原文地址:https://www.cnblogs.com/jialeliu/p/15926020.html
Copyright © 2020-2023  润新知