一. 环境准备
appium-pythin-client 版本 (0.17),selenium 版本 (2.53.6)(版本需对应, 否则执行脚本可能出错, 我用的是这两个版本)
macOs 版本 10.14.1(appium 默认不支持该版本, 需修改配置文件), 参考:
xcode 版本 10.1
下载 SDK 解压后, 点击 tools 文件里的 Android 文件, 进行相关安卓版本下载
二. demo 代码
测试文件代码:
- # coding=utf-8
- """
- author: zhuzhuzhujt
- datetime: 2019/3/5 4:09 PM
- project: appuimtest
- software: PyCharm
- description:
- """
- import os
- import unittest
- from appium import webdriver
- import time
- import swipeandroid as sw
- # from selenium.webdriver.support.ui import WebDriverWait
- # Appium 环境配置
- PATH = lambda p: os.path.abspath(
- os.path.join(os.path.dirname(__file__), p)
- )
- # print PATH
- class DpAppTests(unittest.TestCase):
- def setUp(self):
- desired_caps = {
- 'automationName': 'Appium',
- 'platformName': 'Android',
- 'deviceName': '192.168.0.55:5556',
- 'platformVersion': '5.1',
- # apk 包名
- 'appPackage': 'cn.campsg.xuebaketang3.app',
- # apk 的 launcherActivity
- 'appActivity': '.MainActivity',
- # 键盘相关
- 'unicodeKeyboard': True,
- 'resetKeyboard': True,
- # 是否自动启动
- 'autoLaunch': True,
- # 可下载地址, 如果测试机无该应用会自动进行下载安装操作
- 'app': PATH('xuebayun.apk'),
- # 如果测试机已有该应用, 不再进行下载安装操作
- 'noReset': True
- }
- self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
- # WebDriverWait(self.driver, 30, poll_frequency=0.5, ignored_exceptions=None)
- def tearDown(self):
- self.driver.quit()
- def test_dpApp(self):
- time.sleep(10)
- # 左滑
- sw.swipLeft(500, self.driver)
- # 左滑
- sw.swipLeft(500, self.driver)
- # 模拟定位点击 "立即体验"
- sw.simclick(self.driver, 0.54, 0.89)
- time.sleep(2)
- self.driver.find_element_by_android_uiautomator('new UiSelector().text(" 请输入学校名称 ")').send_keys(u'****')
- time.sleep(1)
- self.driver.find_element_by_android_uiautomator('new UiSelector().text(" 请输入账号 ")').send_keys('***')
- time.sleep(1)
- self.driver.find_element_by_android_uiautomator('new UiSelector().text("•••••")').send_keys('***')
- time.sleep(1)
- self.driver.find_element_by_android_uiautomator('new UiSelector().description(" 登录 ")').click()
- time.sleep(4)
- if __name__ == '__main__':
- suite = unittest.TestLoader().loadTestsFromTestCase(DpAppTests)
- unittest.TextTestRunner(verbosity=2).run(suite)
调用方法 swipeandroid.py:
- # coding=utf-8
- """
- author: zhuzhuzhujt
- datetime: 2019/3/6 11:56 AM
- project: appuimtest
- software: PyCharm
- description:
- """
- def getSize(dr):
- # 获取屏幕宽高
- x = dr.get_window_size()['width']
- y = dr.get_window_size()['height']
- return x, y
- def swipeUp(t, dr):
- l = getSize(dr)
- x1 = int(l[0] * 0.5)
- y1 = int(l[1] * 0.75)
- y2 = int(l[1] * 0.25)
- dr.swipe(x1, y1, x1, y2, t)
- def swipeDown(t, dr):
- l = getSize(dr)
- x1 = int(l[0] * 0.5) # x 坐标
- y1 = int(l[1] * 0.25) # 起始 y 坐标
- y2 = int(l[1] * 0.75) # 终点 y 坐标
- dr.swipe(x1, y1, x1, y2, t)
- # 屏幕向左滑动
- def swipLeft(t, dr):
- l = getSize(dr)
- x1 = int(l[0]*0.75)
- y1 = int(l[1]*0.5)
- x2 = int(l[0]*0.05)
- dr.swipe(x1, y1, x2, y1, t)
- # 屏幕向右滑动
- def swipRight(t, dr):
- l = getSize(dr)
- x1 = int(l[0]*0.05)
- y1 = int(l[1]*0.5)
- x2 = int(l[0]*0.75)
- dr.swipe(x1, y1, x2, y1, t)
- def simclick(dr, xper, yper):
- # 模拟坐标点击
- l = getSize(dr)
- x1 = int(l[0]*xper)
- y1 = int(l[1]*yper)
- dr.swipe(x1, y1, x1, y1, 1)
三. 真机运行
usb 连接, 开启开发者选项中的 usb 调试功能. 控制台输入: adb devices 查看设备列表
或者通过 Wi-Fi 连接, 手机和电脑属于同一网段且能够 ping 通, 控制台输入: adb connect 192.168.0.55:5556(默认断口号 5555, 可以 adb tcpip 5556 进行更改), 提示连接成功后, 控制台输入: adb devices 查看设备
py 代码参数设置如下:
- desired_caps = {
- 'automationName': 'Appium',
- 'platformName': 'Android',
- 'deviceName': '192.168.0.55:5556',
- 'platformVersion': '5.1',
- # apk 包名
- 'appPackage': 'cn.campsg.xuebaketang3.app',
- # apk 的 launcherActivity
- 'appActivity': '.MainActivity',
- # 键盘相关
- 'unicodeKeyboard': True,
- 'resetKeyboard': True,
- # 是否自动启动
- 'autoLaunch': True,
- # 可下载地址, 如果测试机无该应用会自动进行下载安装操作
- 'app': PATH('xuebayun.apk'),
- # 如果测试机已有该应用, 不再进行下载安装操作
- 'noReset': True
- }
打开 appium, 点击 launch 打开 appium 服务后, 在 pycharm 上执行代码, 测试机会自动执行
四. 安卓模拟器执行
SDK 文件夹, 点击 tools 文件里的 Android 文件
1. 下载 Android 版本, 我这里下载的是 5.1 版本
2. 下载完成后, 点击菜单栏如下, 选择 Manage AVDs
3. 点击 create, 创建模拟器, 如图 (具体配置可以自行百度)
4. 点击 start 运行模拟器, 此处一开始点击启动时, 报了个未安装 Intel HAXM 的 error, 此时回到 Android SDK Mannager 配置页, 选择 extras 下如图的文件进行安装
下载成功后, 我又试了下 start 模拟器, 仍旧报错.
此时进入 SDK 文件夹, 多了个 extras 文件夹, 点进去选择 intel, 一层层进入, 会有个两个安装文件, 如下图, 我试了第 1 个未安装成功, 点击第 2 个文件提示安装好后, 进入系统安全性与隐私内, 把系统阻拦的文件访问给允许 (就因为这个地方导致一直无法访问 intel HAXM)
之后, 进入 AVM 配置页面, 点击 start, 模拟器成功启动 (特别慢, 需要等很久时间), 进入系统后显示如图
5. 修改代码参数配置处, 修改 deviceName, 模拟器设备名, 可进入控制台输入: adb devices 查看, 如下图
修改代码:
6. 打开 appium, 点击 launch, 启动 appium 服务后, 运行代码文件
自动下载 apk 文件安装, 并自动执行
(注: 模拟器过分卡顿, 很容易出现应用闪退的情况, 之后准备再试一下夜神模拟器上运行的情况)
以上就是 Appium 自动化测试在真机和模拟器上的运行步骤, 下一节, 稍微写一下 iOS 真机及 iOS 模拟器自动运行应用的情况.
来源: https://www.cnblogs.com/zhuzhutest/p/10489873.html