一、环境搭建
真机(模拟器)+ Appium+Pycharm(appium-python-client)
1.工作原理

环境搭建
# java运行环境
JDK 安装,并配置环境变量
# 安卓软件开发工具包
Android SDK 安装,并配置环境变量
# appium安装
Appium-windows-1.19.1.exe
# 安装appium-python-client
pip install appium-python-client
appium下载:https://github.com/appium/appium-desktop/releases/tag/v1.19.1
2.appium界面


3.连接appium
连接到手机
1.设置 ---> 关于手机
2.不断点击"版本号"菜单(7次以上)
3.退出到上级菜单,在开发者模式中,启动"USB调试"
appium配置参数
import json
desired_caps={
# 手机的操作系统:安卓
"platformName": "Android",
# 操作系统的版本:9.0
"platformVersion": "9",
# 手机或模拟器的类型:### (adb devices查看)
"deviceName": "127.0.0.1:10027",
# 本地绝对路径所指向的一个"安装包"
"app": "/home/appium/apps/kaoyan3.1.0.apk",
# Android 应用的包名:### (aapt dump badging 安装包名 | grep package)
"appPackage": "com.tal.kaoyan",
# 包中所要启动的 Android activity:###
# (aapt dump badging 安装包名 | grep launchable)
"appActivity":"com.tal.kaoyan.ui.activity.SplashActivity",
# 在当前 session 下不会【重置应用的数据】,默认值为 false
"noReset": "false"
}
# ************字典转json文件*************
print(json.dumps(desired_caps))
简单脚本跑一下
selenium 4.1.0
Appium-Python-Client 2.1.2
jdk1.8.0_141
Android Debug Bridge version 1.0.41
Version 31.0.2-7242960
from appium import webdriver
from time import *
# 使用python-appium-client连接【服务器】,通过【服务器】来与【终端】进行会话
# 1【配置服务器的参数】
desired_caps={
"platformName": "Android",
"platformVersion": "9",
"deviceName": "127.0.0.1:10027",
"app": "/home/appium/apps/kaoyan3.1.0.apk",
"appPackage": "com.tal.kaoyan",
"appActivity":"com.tal.kaoyan.ui.activity.SplashActivity",
"noReset": "false"
}
# 2【连接服务器】
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(10)
""" 开始测试 """
# 1.1 验证已安装
if driver.is_app_installed("com.tal.kaoyan"):
print("已经安装好了!")
else:
print("已经卸载了!")
# 1.2 关闭当前app
sleep(2)
driver.close_app()
# 1.3 卸载app
sleep(2)
driver.remove_app("com.tal.kaoyan")
# 1.4 验证已卸载
sleep(2)
if driver.is_app_installed("com.tal.kaoyan"):
print("已经安装好了!")
else:
print("已经卸载了!")
二、appium的使用
1.元素定位
from appium import webdriver
from time import sleep
from appium.webdriver.common.appiumby import AppiumBy
dict1 = {
"platformName": "Android",
"platformVersion": "9",
"deviceName": "127.0.0.1:10027",
"appPackage": "com.tal.kaoyan",
"appActivity": "com.tal.kaoyan.ui.activity.SplashActivity",
"noReset": False
}
# 【连接服务器】
driver = webdriver.Remote('http://localhost:4723/wd/hub', dict1);
driver.implicitly_wait(5)
# >>点击取消
try:
element1 = driver.find_element(AppiumBy.ID, "android:id/button2")
except Exception as e1:
print("未弹出更新",e1)
else:
print("弹出更新");
element1.click()
# >>点击跳过
try:
element2 = driver.find_element(AppiumBy.ID, "com.tal.kaoyan:id/tv_skip")
except Exception as e1:
print("未弹出引导",e1)
else:
print("弹出引导");
element2.click()
# >>点击注册
driver.find_element(AppiumBy.ID, "com.tal.kaoyan:id/login_register_text").click();
sleep(2)
# >>点击头像
driver.find_element(AppiumBy.ID, "com.tal.kaoyan:id/activity_register_userheader").click();
sleep(2)
# >>点击哈士奇
list1 = driver.find_elements(AppiumBy.ID, "com.tal.kaoyan:id/item_image")
list1[2].click();
sleep(2)
# >>点击保存
driver.find_element(AppiumBy.ID, "com.tal.kaoyan:id/save").click()
sleep(2)
# 关闭app
driver.close_app()
2.屏幕滑动
from appium import webdriver;from time import sleep
from appium.webdriver.common.appiumby import AppiumBy
dict1={
"platformName": "Android",
"platformVersion": "9",
"deviceName": "127.0.0.1:10027",
"appPackage": "com.tal.kaoyan",
"appActivity":"com.tal.kaoyan.ui.activity.SplashActivity",
"noReset":False
}
''' 【连接服务器】 '''
driver=webdriver.Remote('http://localhost:4723/wd/hub',dict1);driver.implicitly_wait(5)
# >> 点击取消
try:
element1=driver.find_element(AppiumBy.ID,"android:id/button2")
except:
print("未弹出更新")
else:
print("弹出更新");element1.click();sleep(2)
# >> 屏幕的滑动 #起点(x1,y1) #终点(x2,y2)
for i in range(2):
# driver.get_window_size() 获取屏幕大小
size1=driver.get_window_size();width1=size1.get("width");height1=size1.get("height")
x1=width1*0.9;y1=height1*0.5;x2=width1*0.1;y2=y1
# driver.swipe(x1,y1,x2,y2) 实现屏幕的滑动
driver.swipe(x1,y1,x2,y2);sleep(2)
版权声明:本文为qq_45513965原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。