Appium是一个用于自动化移动应用程序的开源工具,支持iOS和Android平台。通过Appium,您可以编写测试脚本来自动化测试您的移动应用程序,包括UI测试、功能测试等。
-
JDK安装:JDK(Java Development Kit)是Java开发环境的基础,Appium的一些组件可能需要Java来运行,因此需要安装JDK。
-
Android SDK安装:Android SDK(Software Development Kit)是Android应用开发的工具集,Appium用于与Android设备进行通信和操作,因此需要安装Android SDK。
-
Node.js安装:Appium是基于Node.js开发的,因此需要安装Node.js来运行Appium。
-
Appium Server安装:Appium Server是Appium的核心组件,它负责管理设备连接、执行测试脚本等功能,需要安装Appium Server来启动Appium测试服务。
-
Appium Inspector安装:Appium Inspector是一个图形化工具,用于检查应用程序的UI元素和生成自动化测试脚本,安装Appium Inspector可以帮助您更方便地编写测试脚本。
-
pip install Appium-Python-Client安装:这是Appium Python客户端库,用于编写Python脚本来与Appium Server通信,执行测试操作等。
一、JDK安装
网上其他博客有很多安装教程
二、Android SDK 安装
方法一:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
下载完成后,解压后点击SDK Manager.exe执行程序
选择安装内容,记得下一步点击同意,我这里就不再进行安装了。
若安装失败,记得多安装几次。
方法二:通过Android Studio进行安装
打开系统目录看见,如下图:
配置环境:
变量名:ANDROID_HOME
变量名:Path
验证环境,打开cmd,输入adb
三、node.js安装
地址:Node.js
下载完成后,指定安装目录,点击下一步安装,我这里已安装就不进行安装了。
配置环境
变量名:path
验证环境,cmd输入node -v。如图:
四、Appium Server安装
地址:https://github.com/appium/appium-desktop/releases
或下载exe程序都行。安装完成后或下载完成后,如图:
启动服务。如图(保持默认不变):
编辑设置。如图:
这里会从系统环境变量中自动引用的。如图:
注意:若没有引用出来,确认在标记下系统环境变量中确定是无误的,可手动进行添加。一定注意是要一致的。
启动服务:
五、Appium Inspector安装
地址:Releases · appium/appium-inspector · GitHub (若多次访问加载不出来,最直接的就是vpn代理)。如图:
解压后,启动客户端。如图:
配置填写。如图:
这个是提前写好的json表达式,是appium启动服务自动拉起APP服务的关键一步。如图:
{
"platformName": "Android",
"platformVersion": "9",
"deviceName": "92HX1WTMP",
"appPackage": "com.matthew.yuemiao",
"appActivity": "com.matthew.yuemiao.ui.activity.WelcomeActivity"
}
注意:若报错session会话超时,建议修改json如下:
{
"platformName": "Android",
"platformVersion": "9",
"deviceName": "92HX1WTMP",
"app":"F:/test/xq.apk",
"appPackage": "com.matthew.yuemiao",
"appActivity": "com.matthew.yuemiao.ui.activity.WelcomeActivity"
}
点击Start Session,会进入appium模拟器控制界面。如图:
点击图标,代表select elements,这比安卓自带uiautomatorviewer.bat方便许多。
这个界面中的功能都挺简单,可以点击试用都应该知道怎么操作。
六、脚本录制
1.录制脚本前,需先点击录制图标,并选择录像标签,并选择录制脚本语言。如图:
2.在source下,可进行模拟器模拟点击、输入操作。如图:
3.点击录制标签下,可看见录制的代码。如图:
4.点击样本代码。如图:
完整的python 脚本已录制完成。当然该代码是未构造方法很简陋。当然我们肯定是通过pycharm来构造appium自动化脚本。
七、pip install Appium-Python-Client安装
cmd执行该命令,前提是你正确安装了python环境。
# 下载慢,则开启代理vpn试试
方法一:pip install Appium-Python-Clien
# 清华
方法二:pip install Appium-Python-Clien -i https://pypi.tuna.tsinghua.edu.cn/simple
# 豆瓣
方法三:pip install Appium-Python-Clien -i http://pypi.douban.com/simple/
八、appium自动化测试demo
该代码执行逻辑安装apk-启动apk-隐私政策弹窗-提取隐私政策文本-返回-点击同意按钮-进入登录页输入手机号,验证码(需手动介入)。
import time
import re
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from appium.options.common.base import AppiumOptions
from appium.webdriver.common.touch_action import TouchAction
import xml.etree.ElementTree as ET
class AppiumTest:
# 定义输出文件路径
OUTPUT_FILE_PATH = "F:/automation/output.txt"
# 定义匹配模式
PATTERN = r'隐私政策'
# 驱动选项
DRIVER_OPTIONS = {
"platformName": "Android",
"appium:platformVersion": "9",
"appium:deviceName": "92HX1WTMP",
"appium:app": "F:/testt/ym.apk",
"appium:appPackage": "com.matthew.yuemiao",
"appium:appActivity": "com.matthew.yuemiao.ui.activity.WelcomeActivity",
"appium:ensureWebviewsHavePages": True,
"appium:nativeWebScreenshot": True,
"appium:newCommandTimeout": 3600,
"appium:connectHardwareKeyboard": True
}
def __init__(self):
# 初始化驱动
self.driver = self.init_driver()
def init_driver(self):
# 初始化驱动函数
options = AppiumOptions()
options.load_capabilities(self.DRIVER_OPTIONS)
return webdriver.Remote("http://127.0.0.1:4723/wd/hub", options=options)
def find_and_click_element(self, by, value):
# 查找并点击元素
element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((by, value)))
element.click()
def find_and_input_element(self, by, value, input_text):
# 查找并输入文本
element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((by, value)))
element.send_keys(input_text)
def search_and_click_privacy_policy(self):
# 搜索并点击隐私政策
if re.search(self.PATTERN, self.driver.page_source):
print("找到包含'隐私政策'文本的元素")
# 点击坐标
TouchAction(self.driver).tap(x=841, y=935).perform()
time.sleep(3)
self.parse_and_write_to_file(self.driver.page_source)
else:
print("未找到包含'隐私政策'文本的元素")
def parse_and_write_to_file(self, page_source):
# 解析并写入文件
root = ET.fromstring(page_source)
with open(self.OUTPUT_FILE_PATH, 'w', encoding="utf-8") as output_file:
for node in root.iter():
if 'text' in node.attrib:
output_file.write(node.attrib['text'].replace('\u00A0', ' ') + "\n")
def run_test(self):
# 运行测试
self.search_and_click_privacy_policy()
self.driver.back()
self.find_and_click_element(AppiumBy.ID, "com.matthew.yuemiao:id/ok")
self.find_and_click_element(AppiumBy.ID, "com.matthew.yuemiao:id/checkBox")
self.find_and_input_element(AppiumBy.XPATH, "//android.widget.EditText[@resource-id=\"com.matthew.yuemiao:id/custom_editText\" and @text=\"请输入手机号\"]", "15982391396")
self.driver.quit()
if __name__ == "__main__":
AppiumTest().run_test()