1、webdriver 库里的常用 API
一、appium-python-client 中 webdriver 库里的常用 API
-
获取当前应用的包名和启动名
driver.current_package # 获取当前应用包名 driver.current_activity # 获取当前界面启动名
-
关闭当前 APP
driver.close_app() # 这是一个方法,不是属性,关闭前置代码中打开的 APP
启动其它的 APP
driver.start_activity( "包名","启动名" ) # 可以在当前 APP 内再次打开另外一个 APP
-
退出( 关闭 ) 当前 APP
driver.quit() # 可以关闭当前次的会话,失去与手机之间的连接
-
安装卸载 APP
driver.install_app( "包所在路径" ) # 安装对应的 APK 包 driver.remove_app( "包名" ) # 卸载之前确保该应用已经安装在手机上
-
判断是否安装了某个 APP
driver.is_app_installed( "包名" ) # 传入一个包名,返回布尔值,判断当前应用是否被安装
-
在后台运行 APP
driver.background_app( 时间 ) # 接收一个时间参数,单位是毫秒,让应用置于后台运行一定的时间
-
查询手机的时间
driver.device_time # 这是一个查询当前设备时间的属性
-
获取当前设备的屏幕分辨率
driver.get_window_size() # 返回一个字典,包含了设备的宽度和高度
-
发送键到设备
driver.keyevent( 码值 ) # 可以发送一个数值代表具体的手机操作,例如 4 就代表点击返回键
-
进行手机截图
driver.get_screenshot_as_file( "./1.png" ) # 将当前手机所在界面进行截图,传入的是希望的最终文件路径
-
获取当前屏幕内元素结构
driver.page_source # 这是一个属性,可以返回当前手机界面中对应元素的 xml 文档格式信息
-
操作手机通知栏【了解】
driver.open_notifications()
-
获取手机当前网络【了解】
print(driver.network_connection) # 这是一个属性,返回一个数字,表示当前设备连接的网络
-
设置手机网络【了解】
driver.set_network_connection(1) # 接收的是一个数字类型,表示不同的网络类型状态
二、上传文件到手机
我们之前在 adb 操作中可以通过 adb push 或者 adb pull 命令轻松的实现文件在PC与手机设备之间的传输操作,但是有了在 appium 的 webdriver 库中不能直接对文件整体进行操作,它允许操作是文件里具体的数据内容。同时手机对于数据的编码有自已的要求,所以如果我们想要将PC机上的一个文件最终上传到手机里,需要做的事情是先拿到该文件中的数据源,然后进行一系统的编码、解码操作,最终将满足手机支持的数据格式以字符的形式写入到手机对应的存储位置
# -*- coding=utf-8 -*-
import base64
# 导入python需要的 webdriver 库
from appium import webdriver
# 定义一个空字典来存放具体的配置参数
desired_caps = dict()
# 书写具体的参数
desired_caps["platformName"] = "android" # 当前的系统平台名称
desired_caps["platformVersion"] = "5.1.1" # 当前连接设备的 android 版本
desired_caps["deviceName"] = "emulator-5554" # 当前已连接设备的名称
desired_caps["appPackage"] = "com.android.settings" # 被测试 APP 的包名
desired_caps["appActivity"] = ".Settings" # 被测试 APP 的启动名
# 获取对应的连接
driver = webdriver.Remote( "http://localhost:4723/wd/hub",desired_caps )
# 读取2.txt里的内容
with open( "2.txt","r",encoding="utf8" ) as f1:
original_data = f1.read()
# 将从文件中读取出来的原始数据进行编码,编码成 utf8 [ 因为手机支持是经过 base64规则加密之后的utf8 ]
utf8_data = original_data.encode("utf8")
# 将上述编码成 utf8 规则的字符进行 base64 加密处理
base64_utf8_data = base64.b64encode( utf8_data )
# 将数据处理成 base64 加密后的utf8 编码之后还需要处理成 str 的格式才能写入手机
str_data = str( base64_utf8_data,"utf8" )
# 将具体的内容写入到手机具体的目录当中
driver.push_file( "./sdcard/000.txt",str_data )
三、拉取手机文件到本地
拉取文件与上传文件思路完全一致,不一样的就是具体的代码书写,一个是从PC到手机,一个是从手机到 PC
# -*- coding=utf-8 -*-
import base64
# 导入python需要的 webdriver 库
from appium import webdriver
# 定义一个空字典来存放具体的配置参数
desired_caps = dict()
# 书写具体的参数
desired_caps["platformName"] = "android" # 当前的系统平台名称
desired_caps["platformVersion"] = "5.1.1" # 当前连接设备的 android 版本
desired_caps["deviceName"] = "emulator-5554" # 当前已连接设备的名称
desired_caps["appPackage"] = "com.android.setting