当前位置:网站首页>Appium自动化测试基础 — APPium基础操作API(二)
Appium自动化测试基础 — APPium基础操作API(二)
2022-07-05 15:03:00 【测试-八戒】
5、发送文件到手机和获取手机中的文件
(1)发送⽂件到⼿机
代码片段:
# 导入base64库
import base64
# 将文件转换成二进制文件
with open(file_path,'rb') as fp:
data = str(base64.b64encode(fp.read()),'utf-8')
# print(data)
# 将转换格式的文件发送到手机
driver.push_file(path, data)
参数说明:file_path
:需要上传的文件路径。path
:⼿机设备上的路径(例如:/sdcard/a.txt)data
:⽂件内数据,要求base64编码。
说明:
Python3.x中字符都为unicode编码,需要先导入base64
库进行编码和解码,先把文件转成base64
格式的二进制文件,然后进行文件传递到手机,因为设备之间传递是二进制的。
(2)从⼿机中拉取⽂件
代码片段:
import base64
# 返回数据为base64编码的数据
data = driver.pull_file(path)
# base64解码
with open('a.txt','wb') as fp:
fp.write(base64.b64decode(data))
参数:path
:⼿机设备上的路径例如: /sdcard/a.txt
(3)示例:
# 1.导入appium
import time
from appium import webdriver
import base64
# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.cyanogenmod.filemanager", # APP包名
"appActivity": ".activities.NavigationActivity" # APP启动名
}
# 3.启动APP
# 声明手机驱动对象(实例化webdriver)
# 第一个参数为appium服务的地址,需要启动appium服务。
# 第二个参数为Desired capabilities对象
# 我们就先传入这两个参数就可以了。
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 4.操作APP
# 4.1 发送文件到手机
file_path = r'C:\Users\L\Desktop\test.txt'
# 将文件转换成二进制文件
with open(file_path, 'rb') as fp:
data = str(base64.b64encode(fp.read()), 'utf-8')
# print(data)
# 将转换格式的文件发送到手机
path = r'/sdcard/test.txt'
driver.push_file(path, data)
# 4.2 从手机中拉取文件到电脑上
# 手机中文件的路径
path_app = '/sdcard/test.txt'
# 返回数据为base64编码的数据
data = driver.pull_file(path_app)
print(data)
# base64解码
with open('test.txt', 'wb') as fp:
fp.write(base64.b64decode(data))
# 提示:该文件会拉取到脚本文件所在的目录中
# 5.关闭APP
time.sleep(5)
driver.quit()
6、获取当前屏幕内元素结构(重点)
(也就是获取当前屏幕的源码)
使用的API:
driver.page_source
作⽤:
返回当前页⾯的⽂档结构,可以为后续判断特定的元素是否存在提供前提。
示例:
# 1.导入appium
import time
from appium import webdriver
# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
}
# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 4.操作APP
# 获取当前页面源码
# 只是设置首页中的页面源码
source = driver.page_source
# # print(source)
# 将app的页面源码保存到一个文件中
with open("source.txt", "w", encoding="UTF-8") as fp:
fp.write(source)
# 5.关闭APP
time.sleep(3)
driver.quit()
7、脚本内启动其他app
使用的API:
driver.start_activity(appPackage,appActivity)
提示:appPackage,appActivity为所要启动app的包名和启动名
示例:
# 从管理app页面中打开文件管理器app
# 1.导入appium
import time
from appium import webdriver
# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
}
# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 4.操作APP
# 从设置app页面启动文件管理器APP
time.sleep(3)
# 先用adb命令获取文件管理器的包名和启动名
# com.cyanogenmod.filemanager/.activities.NavigationActivity
driver.start_activity("com.cyanogenmod.filemanager", ".activities.NavigationActivity")
# 5.关闭APP
time.sleep(3)
driver.quit()
8、将应用程序置于后台运行(重点)
使用的API:
# 将应用置于后台运行(秒)
driver.background_app()
示例:
# 1.导入appium
import time
from appium import webdriver
# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
}
# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 4.操作APP
time.sleep(3)
# 将设置app置于后台运行
# 将应用在后台运行5秒,返回前台
driver.background_app(5)
# 提示:测试前最好把设备中所有后台运行的app都关闭掉。
# 5.关闭APP
time.sleep(3)
driver.quit()
提示:在测试app热启动的时候,就会常用到该命令。
重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料在下方链接如下
边栏推荐
- Magic methods and usage in PHP (PHP interview theory questions)
- Coding devsecops helps financial enterprises run out of digital acceleration
- Bugku cyberpunk
- Photoshop plug-in action related concepts actionlist actiondescriptor actionlist action execution load call delete PS plug-in development
- How to solve the problem of garbled code when installing dependency through NPM or yarn
- Detailed explanation of QT creator breakpoint debugger
- Go learning ----- relevant knowledge of JWT
- 复现Thinkphp 2.x 任意代码执行漏洞
- Can gbase 8A view the location of SQL statement history?
- Install PHP extension spoole
猜你喜欢
Common redis data types and application scenarios
[12 classic written questions of array and advanced pointer] these questions meet all your illusions about array and pointer, come on!
Number protection AXB function! (essence)
华为哈勃化身硬科技IPO收割机
Bugku's Ah Da
Reasons and solutions for redis cache penetration and cache avalanche
CODING DevSecOps 助力金融企业跑出数字加速度
你童年的快乐,都是被它承包了
I include of spring and Autumn
Visual task scheduling & drag and drop | scalph data integration based on Apache seatunnel
随机推荐
Behind the ultra clear image quality of NBA Live Broadcast: an in-depth interpretation of Alibaba cloud video cloud "narrowband HD 2.0" technology
The difference between SQL Server char nchar varchar and nvarchar
Number protection AXB function! (essence)
Super wow fast row, you are worth learning!
CODING DevSecOps 助力金融企业跑出数字加速度
ICML 2022 | explore the best architecture and training method of language model
Coding devsecops helps financial enterprises run out of digital acceleration
Misc Basic test method and knowledge points of CTF
社区团购撤城“后遗症”
[12 classic written questions of array and advanced pointer] these questions meet all your illusions about array and pointer, come on!
lvgl 显示图片示例
Does maxcompute have SQL that can query the current storage capacity (KB) of the table?
OSI 七层模型
Dark horse programmer - software testing -10 stage 2-linux and database -44-57 why learn database, description of database classification relational database, description of Navicat operation data, de
qt creater断点调试程序详解
复现Thinkphp 2.x 任意代码执行漏洞
亿咖通科技通过ISO27001与ISO21434安全管理体系认证
Redis distributed lock principle and its implementation with PHP (1)
[recruitment position] Software Engineer (full stack) - public safety direction
Interpretation of Apache linkage parameters in computing middleware