启动appium服务
终端启动直接输入appium
退出: ctrl + c
adb工具也要启动 定位包名和启动名
adb shell dumpsys activity | find "mFocusedActivity"
1、安装apk到手机上
# -*-coding: utf-8 -*-
from appium import webdriver
import base64
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
# app信息
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 声明desire对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 安装apk到手机 文件路径
driver.install_app(r'C:\Users\l\Desktop\爬虫\移动端测试\1973617.apk')
# 退出驱动对象
driver.quit()
2、卸载apk
# -*-coding: utf-8 -*-
from appium import webdriver
import base64
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
# app信息
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 声明desire对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 卸载APP操作 APK的包名
driver.remove_app("com.youba.calculate")
# 退出驱动对象
driver.quit()
3、判断是否安装了APK
# 可以传入app包名,返回结果为True(已安装) / False(未安装)
is_data=driver.is_app_installed("com.android.dialer")
print(is_data)
4、发送文件到手机
import base64
# 电脑文件路径
with open('./text.txt', 'r') as f:
# 编码 ---> 转码
data = str(base64.b64encode(f.read().encode('utf-8')), 'utf-8')
# 发送到APP上的路径
driver.push_file('/sdcard/text.txt', data)
参数:
data:文件内数据,要求base64编码
Python3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;
生成的数据为byte类型,需要将byte转换回去。
5、拉取文件:
import base64
data = driver.pull_file(path) # 返回数据为base64编码
print(str(base64.b64decode(data),'utf-8')) # base64解码
参数:
path: 手机设备上的路径
6、获取当前屏幕内元素结构
# 返回当前页面的文档结构,判断特定的元素是否存在
page_data = driver.page_source
if '妞' in page_data:
print('ok')
else:
print('NO')
print(page_data)