老板叫我写个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的定位方法。

目录
相关文章
|
5天前
|
Linux Shell Perl
自动化脚本之Debian 开机时运行通过expect自动执行串口命令
自动化脚本之Debian 开机时运行通过expect自动执行串口命令
23 0
|
5天前
|
安全 Linux Android开发
自动化脚本之文件搜索显示
自动化脚本之文件搜索显示
17 0
|
5天前
|
JSON 监控 测试技术
Groovy脚本编写员工上网行为监控自动化测试
本文介绍了如何使用Groovy脚本创建一个自动化工具来监控员工的网络活动。通过编写简单脚本记录员工访问的网站并打印信息,可进一步扩展为将数据保存至数据库。此外,通过设定定时任务,实现了每30分钟自动监控一次的功能。最后,展示了如何将监控数据转换为JSON格式并使用HTTP POST请求提交到网站,以实现数据的自动化上报,有助于企业保障网络安全、保护数据并提升工作效率。
62 5
|
5天前
|
前端开发 Java 测试技术
selenium+python自动化测试--登录
selenium+python自动化测试--登录
13 2
|
5天前
|
JavaScript 前端开发
Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
在Web自动化中,Playwright提供`page.evaluate()`和`page.evaluate_handle()`来执行JavaScript脚本。`page.evaluate()`返回脚本执行结果,而`page.evaluate_handle()`返回JSHandle。示例展示了如何使用它们,如打印网页标题、操作元素及获取页面内容。通过这些方法,可以处理常规方法难以操作的网页元素。
12 2
|
5天前
|
测试技术 API 开发者
使用 Playwright 脚本录制简化自动化测试:完全指南
Playwright提供了一种脚本录制功能,帮助开发者通过交互式操作自动生成测试脚本,提升测试效率。使用Playwright的命令行工具`codegen`,如`playwright codegen python <url>`,可以记录浏览器操作并生成Python测试脚本。生成的脚本使用Playwright API模拟用户交互,如`page.click()`和`page.fill()`。这种方法简化了自动化测试脚本的编写,促进了测试流程的加速。
9 1
|
5天前
|
IDE 测试技术 开发工具
从零开始:使用 Playwright 脚本录制实现自动化测试
Playwright提供了一种便捷的脚本录制功能,类似于Selenium IDE。通过运行`playwright codegen`命令,你可以启动一个浏览器并记录你的操作,生成Python或异步代码。在示例中,展示了如何录制登录百度的过程,生成的代码可以直接用于自动化测试。Playwright Inspector允许你编辑和转换测试代码,支持生成Pytest格式的测试用例,方便Python开发者使用。这个功能使Playwright成为强大的Web自动化测试工具。
12 3
|
5天前
|
SQL 关系型数据库 MySQL
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
该文章提供了在虚拟机上安装MySQL服务的简化方法,特别是针对新手。作者提供了一个自动化脚本`install_mysql.sh`,使得安装过程更简单。用户需要下载`install.rpm`资源,将其放在指定目录下,然后创建并编辑脚本文件,将提供的代码粘贴进去,通过`chmod u+x`授权,最后运行脚本`./install_mysql.sh [rpm文件路径]`来安装MySQL。文章还附有相关图片说明。
40 1
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
|
5天前
|
SQL 缓存 关系型数据库
MySQL常见问题解决和自动化安装脚本
这篇内容包含了两个主要部分:解决MySQL登录问题和处理GPG密钥问题。当MySQL密码正确但无法登录时,可以通过执行SQL命令`ALTER USER`和`flush privileges`来修改和重置密码。对于MySQL安装时的GPG密钥错误,首先需要强制删除旧的MySQL仓库包,导入新的GPG公钥,然后安装MySQL服务器。如果遇到GPG检查错误,可以使用`--nogpgcheck`参数忽略检查来安装。最后,提供了一个自动化安装MySQL的脚本,用于检查旧版本、卸载残留、安装MySQL8并启动服务。
27 1
MySQL常见问题解决和自动化安装脚本
|
5天前
|
弹性计算 运维 Shell

热门文章

最新文章