ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python+appium自动化测试-元素定位之android uiautomatorandroid

2021-05-13 16:06:29  阅读:218  来源: 互联网

标签:定位 appium uiautomatorandroid uiautomator python self account et android


uiautomator

来自APP Android端自动化测试初学者的笔记,写的不对的地方大家多多指教哦。

在之前有介绍一些平时常用的元素定位方式,最近在学习过程中有发现另一个比较好用的定位方式,是Android独有的定位方式:android uiautomator,是Android 系统原生支持的定位方式,一种强有力的定位方式,原理是通过android 自带的android uiautomator的类库去查找元素。Appium元素定位方法其实也是基于Uiautomator来进行封装的,使用方法 find_element_by_android_uiautomator() 可以运用UiAutomator元素定位。

UiAutomator元素定位的方法名和对应Android的属性如下:

在这里插入图片描述
在这里插入图片描述

常规模式下的android uiautomator元素定位

以下定位方式都与appium封装好的定位方式是一样的,只是将写法换成了android_uiautomator

1.android uiautomator—resourceId定位

el1 = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/et_pws_username")')
el1.send_keys("123")

2.android uiautomator—text定位

el2 = self.driver.find_element_by_android_uiautomator('new UiSelector().text("手机号或者邮箱")')
el1.send_keys("123")

3.android uiautomator—className

el2 = self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")')
el1.send_keys("123")
or:
el2 = self.driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.EditText")')
el1.send_keys("123")

4.android uiautomator—description(对应content-desc)

el2 = self.driver.find_element_by_android_uiautomator('new UiSelector().description("xxx")')
el1.send_keys("123")

PO模式下的android uiautomator元素定位

1.base_page.py 封装android uiautomator定位

# 基础类,封装元素定位操作
from appium import webdriver

class BasePage:
    def __init__(self, driver: webdriver):
        self.driver = driver

    # 根据android-uiautomator定位
    def element_android_uiautomator(self, locator):
        return self.driver.find_element_by_android_uiautomator(locator)

    # 多个元素的resourceId/className/text/description一致
    def elements_android_uiautomator(self, locator):
        return self.driver.find_elements_by_android_uiautomator(locator)

2.account_pwd_login.py 封装账号密码登录页面操作

a.android uiautomator—resourceId定位

# 封装账号密码登录页面操作
from appium import webdriver
import BasePage

class AccountPwdLogin:

    # 账号输入框
    _et_account = 'resourceId("com.sina.weibo:id/et_pws_username")'

    # 输入账号,调用android-uiautomator定位
    def input_account(self, account):
        self.element_android_uiautomator(self._et_account).send_keys(account)

b.android uiautomator—text定位

# 基础类,封装元素定位操作
from appium import webdriver
import BasePage

class AccountPwdLogin:

    # 账号输入框
    _et_account = 'text("手机号或者邮箱")'

    # 输入账号,调用android-uiautomator定位
    def input_account(self, account):
        self.element_android_uiautomator(self._et_account).send_keys(account)

c.android uiautomator—className

# 基础类,封装元素定位操作
from appium import webdriver
import BasePage

class AccountPwdLogin:

    # 账号输入框
    _et_account = 'className("android.widget.EditText")'

    # 输入账号,调用android-uiautomator定位
    def input_account(self, account):
        self.element_android_uiautomator(self._et_account).send_keys(account)

or

    # 输入账号,调用android-uiautomator定位
    def input_account(self, account):
        self.elements_android_uiautomator(self._et_account).send_keys(account)

d.android uiautomator—description(对应content-desc)

# 基础类,封装元素定位操作
from appium import webdriver
import BasePage

class AccountPwdLogin:

    # 账号输入框
    _et_account = 'description("xxx")'

    # 输入账号,调用android-uiautomator定位
    def input_account(self, account):
    self.element_android_uiautomator(self._et_account).send_keys(account)

最后|资源分享

下面这些是我的收集和整理的资料,对于开始学习【软件测试】或是技能进阶的朋友来说,绝对是最全面的教程仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你
在这里插入图片描述

关注【程序媛木子】微信公众号测试资源将免费获取~~~

如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以加入我的测试学习群644956177。群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

标签:定位,appium,uiautomatorandroid,uiautomator,python,self,account,et,android
来源: https://blog.csdn.net/zjtdy/article/details/116753151

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有