Appium移动端自动化测试-安卓真机+模拟器启动
一.环境准备
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移动端自动化测试-安卓真机+模拟器启动的更多相关文章
- Appium Desktop Inspector 安卓真机配置(Windows)
本文是基于 Windows环境 通过Appium Desktop 测试真机,首先要确保测试机已经和电脑正确连接(将手机和电脑通过USB数据线连接,手机打开USB调试) 确认电脑与手机是否连接成功的方法 ...
- appium 移动端自动化测试工具
appium 移动端自动化测试工具 appium 移动端自动化测试工具 appium 是哟个自动化测试开源工具 支持ios和安卓平台的应用 以及web应用和混合应用 appium 是一个跨平台的工具: ...
- cocos2dx 安卓真机调试问题汇总
cocos compile编译apk问题汇总: 1,dx编译报错,没有足够的空间 ANTBUILD : [dx] error : Could not create the Java Virtual M ...
- 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
[iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...
- Appium移动端自动化测试--搭建模拟器和真机测试环境
详细介绍安装Android Studio及Android SDK.安装Appium Server. 文章目录如下 目录 文章目录如下 模拟器--安装Android Studio及Android SDK ...
- Appium安卓真机环境搭建
说明 步骤可能比较简洁,因为手头上有安卓测试机,所以需要配置虚拟机的童鞋请去虫师博客园,因为我也是从那儿学的,哈哈.点我飞到虫师那儿 但是如果你要搭建真机测试环境的话,本教程将是最简单实用的. 1. ...
- MAC电脑下Appium + python3 + robotframework ios的真机测试环境搭建
本人的环境搭建前的准备,MAC电脑一台(macOS Mojave 10.14.0及以上),Xcode 10.0及以上 ,自己注册的一个Apple ID 账户,必须你的电脑能连接互联网,最好不要用公 ...
- appium移动端自动化测试环境搭建windows-appium-android
第一步:安装jdk 安装jdk(1.7版本以上) 安装完成设置jdk环境变量(百度查询) cmd命令下键入 java -version命令检查jdk是否安装成功且设置环境变量成功,如下图所示: 第二步 ...
- 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...
随机推荐
- Wait--查看等待
--清除等待统计 --===================================================== --清除等待统计 DBCC SQLPERF (N'sys.dm_os_ ...
- SqlServer:CTE函数处理递归(WITH语法)
原文地址:http://www.cnblogs.com/xbf321/archive/2009/04/30/1446833.html 我们在做分类处理的时候,总会遇到递归的处理,比如说地区就是一个例子 ...
- .net core i上 K8S(七).netcore程序的服务发现
上一章我们分享了k8s的网络代理模式,今天我们来分享一下k8s中的服务发现. 1.环境变量模式的服务发现 k8s默认为我们提供了通过环境变量来实现服务发现的功能,前提是 1.需要service在pod ...
- django 生命周期
客户端发送请求 客户端(浏览器) → 发送请求 → 服务器(wsgi) → 解析请求 → 服务器(Middleware) → process_request → 服务器(urls) → 通过路由寻vi ...
- tcp 建立连接的三次握手,以及关闭连接的4次挥手
TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; (客户端问服务器:你爱我吗?) 第二次握手:服务器收到syn包,必须确认客户的 ...
- redis 3.0 集群__数据迁移和伸缩容
添加节点 1,启动2个新的redis-sever, 参照 ( redis 3.0 集群____安装 ),端口号为 7007 和 7008 2,使用命令 redis-trib.rb add-node 命 ...
- mysql 快照读MVCC
mysql的读分快照读和当前读 快照读 是指写的同时,读不阻塞,达到并发的作用 这时候的读 是 记录的历史版本,存在于undo里,当然回滚时就的也是这个undo 当执行一条update语句时,记录本身 ...
- Flink学习笔记:Flink Runtime
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- css modules
https://juejin.im/post/5aa727fc518825364001159b http://www.ruanyifeng.com/blog/2016/06/css_modules.h ...
- java设计模式学习笔记
简介 设计模式可以分为五类 接口型 模式:适配器模式,外观模式,合成模式,桥接模式 职责型 模式:单例模式,观察者模式,调停者模式,代理模式,职责链模式,享元模式 构造型 模式:构建者模式,工厂方法模 ...