老板叫我写个APP自动化--登录脚本--简单输出

简介: 老板叫我写个APP自动化--登录脚本--简单输出

前言

这里是清安,前面我们准备阶段基本上已经搞定了,环境也是OK了,那么接下来我们就开始正式阶段了。本章就来讲讲元素定位以及简单的登录脚本输出。

「软件嘛,各位可以自行随便下载一个试试问题不大」

元素定位

讲到元素定位,我们也不废话多说,先看一波官网:看到这里,嗯~全英文的,看不懂哎。问题不大,我们一起来看看几个比较常用的即可。例如XPATH,ID,Accessibility ID,CLASS NAME。

初始化

标题不重要,主要是要使用代码连接模拟器,跟Appium Inspector里面类似。

# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
from appium import webdriver
desired_capas = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "appPackage": "com.mxchip.project352",
    "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
    "platformVersion": "7.1.2",
    "noReset": "True"
}
ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
print(ap.context)

首先我们要引入appium的包,其次就是配置参数信息了。desired_capas里面的内容是不是看着很眼熟,就是Appium Inspector所写的一些参数配置。ap是一个变量,随意自己命名。注意命名规范。webdriver.Remote()可以理解为实例化,并且传入连接的地址这些参数都可以在Appium Inspector里面看到。最后我们再次传入配置参数desired_capas,告诉appium我们需要通信的是个什么玩意。由他来帮我们完成接下来的一些列的操作。而我们只要通过ap这个变量调用方法,就可以完成点击等一些操作了。

Accessibility ID

看官网意思:Read a unique identifier for a UI element. For XCUITest it is the element's accessibility-id attribute. For Android it is the element's content-desc attribute.

大概就是说,根据content-desc这个属性来,那么这个属性在哪呢?真不凑巧,这里没有唉,不过没关系,后面会介绍另一个工具uiautomatorviewer,这是安卓自带的一个元素定位工具。这里面会有介绍。先看个截图了解一下:

看图说话,这个够明显了吧,摆明了要你去使用它。所以咱们就安排了他。

# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
from appium import webdriver
desired_capas = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "appPackage": "com.mxchip.project352",
    "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
    "platformVersion": "7.1.2",
    "noReset": "True"
}
ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
ap.find_element_by_id('com.mxchip.project352:id/etPhone').send_keys('qing_an_an')

这里我们直接用find_element_by_id,使用过程中你可能会看到这中间花了一条横线。问题都不大,意思就是下个版本抛弃而已。

CLASS NAME

CLASS NAME还是少用的少,因为这个属性在app中极大的概率会出现重复的。看到了吧,所以咱们还是谨慎使用。那么出现重复的咋办?那么我们就用元素组定位。

# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
from appium import webdriver
desired_capas = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "appPackage": "com.mxchip.project352",
    "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
    "platformVersion": "7.1.2",
    "noReset": "True"
}
ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
ap.find_element_by_id('com.mxchip.project352:id/etPhone').send_keys('qing_an_an')
ap.find_elements_by_class_name('android.widget.EditText')[1].send_keys('jx123456')

元素组定位,除了elements与element的区别外,元素组还需要添加下标来准确定位,例如上述所说,有两个重复的值,那么我们下标就从0开始,我们需要定位到输入密码框,它处于第二位,那么下标值就为1,以此类推。所以写法就是:find_elements_by_class_name('android.widget.EditText')[1]

「此外元素组不只CLASS NAME这一种定位方式,XPATH/ID等都要,用法类似」别看这里展示这么多,咱们用不到。

XPATH

至于XPTAH这个定位方式,有点特殊,我们可以手写,也能直接COPY。看这里就有现成的,但是,现成的太多了,博主本人是不打算复制,所以我选择手写。这里我选择的是text属性定位,也就是俗称文本定位。当然,这里的属性你都可以拿来写XPATH。点击search就能看到有几个元素了看看代码怎么写:

# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
from appium import webdriver
desired_capas = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "appPackage": "com.mxchip.project352",
    "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
    "platformVersion": "7.1.2",
    "noReset": "True"
}
ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
ap.find_element_by_id('com.mxchip.project352:id/etPhone').send_keys('qing_an_an')
ap.find_elements_by_class_name('android.widget.EditText')[1].send_keys('jx123456')
ap.find_element_by_xpath('//*[@text="登录"]').click()

「好了,基本的就是这些了,一起来看看一个完整且简单的APP登录 脚本是怎么样的吧」

# ----清安—---
from appium import webdriver
from time import sleep
desired_capas = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "appPackage": "com.mxchip.project352",
    "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
    "platformVersion": "7.1.2",
    "noReset": "True"
}
ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
ap.find_element_by_id('com.mxchip.project352:id/etPhone').send_keys('qing_an_an')
ap.find_elements_by_class_name('android.widget.EditText')[1].send_keys('jx123456')
ap.find_element_by_id('com.mxchip.project352:id/cbAgree').click()
sleep(1)
ap.find_element_by_xpath('//*[@text="登录"]').click()

此处加了sleep,等待时间,防止定位程序运行起来点击过快可能会报错而添加的,后期用了其他的等待时间函数,这里就可以不用了。当然,你也可以直接不添加。

好了,本章就到了这里,下一章我们讲讲将selenium的定位方式引入进来,以及另一个类似XPTAH的定位方法。

目录
相关文章
|
10月前
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
202 0
|
6月前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
294 5
|
6月前
|
测试技术
自动化测试登录后的功能
在自动化测试的时候,往往许多功能需要登录以后才可以进行操作的,在这里我介绍一种方法,在登录以后将Cookies信息存入本地文件,在测试登录以后操作的时候再从本地文件把信息调出来存入Cookies
127 4
|
5月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
|
8月前
|
自然语言处理 API
tiktok养号脚本, 抖音自动养号脚本app,批量起号插件脚本
该养号系统包含三大核心模块:主控程序实现自动化操作流程,内容生成器创建自然语言内容
|
7月前
|
编解码 数据安全/隐私保护
手机录制脚本自动执行, 免root屏幕录制脚本,自动脚本精灵app【autojs】
自动创建保存目录确保路径存在 动态生成带时间戳的文件名避免重复
|
7月前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
9月前
|
XML 数据格式
美团抢单辅助器app,美团众包抢单辅助脚本,骑手自动抢高价单插件
这是一段关于美团骑手抢单辅助脚本的介绍。使用该脚本可设置最高与最低价格、延迟时间等参数,通过自动化检测和抢单功能帮助骑手提高收入。
|
8月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录

热门文章

最新文章