一.环境准备

appium-pythin-client版本(0.17),selenium版本(2.53.6)(版本需对应,否则执行脚本可能出错,我用的是这两个版本)

macOs版本10.14.1(appium默认不支持该版本,需修改配置文件),参考:https://blog.csdn.net/yxys01/article/details/73551281

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查看设备列表

或者通过wifi连接,手机和电脑属于同一网段且能够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模拟器自动运行应用的情况。

Appium移动端自动化测试-安卓真机+模拟器启动的更多相关文章

  1. Appium Desktop Inspector 安卓真机配置(Windows)

    本文是基于 Windows环境 通过Appium Desktop 测试真机,首先要确保测试机已经和电脑正确连接(将手机和电脑通过USB数据线连接,手机打开USB调试) 确认电脑与手机是否连接成功的方法 ...

  2. appium 移动端自动化测试工具

    appium 移动端自动化测试工具 appium 移动端自动化测试工具 appium 是哟个自动化测试开源工具 支持ios和安卓平台的应用 以及web应用和混合应用 appium 是一个跨平台的工具: ...

  3. cocos2dx 安卓真机调试问题汇总

    cocos compile编译apk问题汇总: 1,dx编译报错,没有足够的空间 ANTBUILD : [dx] error : Could not create the Java Virtual M ...

  4. 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    [iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...

  5. Appium移动端自动化测试--搭建模拟器和真机测试环境

    详细介绍安装Android Studio及Android SDK.安装Appium Server. 文章目录如下 目录 文章目录如下 模拟器--安装Android Studio及Android SDK ...

  6. Appium安卓真机环境搭建

    说明 步骤可能比较简洁,因为手头上有安卓测试机,所以需要配置虚拟机的童鞋请去虫师博客园,因为我也是从那儿学的,哈哈.点我飞到虫师那儿 但是如果你要搭建真机测试环境的话,本教程将是最简单实用的. 1. ...

  7. MAC电脑下Appium + python3 + robotframework ios的真机测试环境搭建

    本人的环境搭建前的准备,MAC电脑一台(macOS Mojave 10.14.0及以上),Xcode 10.0及以上   ,自己注册的一个Apple ID 账户,必须你的电脑能连接互联网,最好不要用公 ...

  8. appium移动端自动化测试环境搭建windows-appium-android

    第一步:安装jdk 安装jdk(1.7版本以上) 安装完成设置jdk环境变量(百度查询) cmd命令下键入 java -version命令检查jdk是否安装成功且设置环境变量成功,如下图所示: 第二步 ...

  9. 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...

随机推荐

  1. json的两种格式

    JSON: JavaScript Object Notation      (JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 XML. 一.JSON对象:JSONObj ...

  2. NET Core 简介

    1. 前言 .NET发行至今已经过了十四个年头.随着版本的不断迭代更新,.NET在Windows平台上的表现也是越来越好,可以说Windows平台上所有的应用类型.NET几乎都能完成. 只是成也Win ...

  3. 食物(矩阵快速幂)(DP)

    这个题..我们可以想到用递推写!!qwq(好吧,其实我的DP水平不高啊qwq) 就是我们以两个为单位(一共九种组合情况),然后往后面推下一位的情况. 通过手动模拟,我们可以找到它们之间的递推关系(详见 ...

  4. CharSequence与String的区别

    CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列. 原文: http://blog.csdn.net/joy_zha ...

  5. WinForm Column cannot be added because its CellType property is null.

    在Winform  DatatGridView 控件中绑定了一个模型的属性,结果在生成窗口时,发生错误,异常信息如下 : Column cannot be added because its Cell ...

  6. ArchLinux 下安装 SecureCRT

    相关说明: 上篇发了个Linux(Ubuntu) 下 SecureCRT 7 30天循环破解在启动的时候会多输入一次确认窗口, 后来maz-1网友留言说可以用Windows破解后程序替换Linux下的 ...

  7. 3,ThreadGroup 的使用场景以及用法

    1 一个大型任务,可分成多个独立的子线程并发进行,最后等待所有的子线程执行结束然后继续往下执行, 使用场景比如 要查找某个用户的最近三个月的通话记录,起 3 个子线程,分别查找最近三个月的记录,然后通 ...

  8. 关于使用Google Analyse导入库文件编译出错的解决办法.

    (最新解决办法):因为要通过cocoapod链接库,那么直接在Podfile上面加上 pod 'GoogleAnalytics-iOS-SDK', '~> 3.0.9',然后在pod insta ...

  9. I01-通过查询资料库方式来监控Informatica调度情况

    --登陆INFA资料库,运行下面的SQL --想要更加个性化查询的话注意看SQL倒数第二第三行的备注 SELECT RUN_DATE, START_TIME , END_TIME, FOLIDER , ...

  10. sublime text3 license & nodejs setting

    ----- BEGIN LICENSE ----- sgbteam Single User License EA7E-1153259 8891CBB9 F1513E4F 1A3405C1 A865D5 ...