一.环境准备

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代码

测试文件代码:

  1. # coding=utf-8
  2. """
  3.  
  4. author: zhuzhuzhujt
  5. datetime: 2019/3/5 4:09 PM
  6. project: appuimtest
  7. software: PyCharm
  8. description:
  9.  
  10. """
  11. import os
  12. import unittest
  13. from appium import webdriver
  14. import time
  15. import swipeandroid as sw
  16. # from selenium.webdriver.support.ui import WebDriverWait
  17.  
  18. # Appium环境配置
  19. PATH = lambda p: os.path.abspath(
  20. os.path.join(os.path.dirname(__file__), p)
  21. )
  22. # print PATH
  23.  
  24. class DpAppTests(unittest.TestCase):
  25. def setUp(self):
  26. desired_caps = {
  27. 'automationName': 'Appium',
  28. 'platformName': 'Android',
  29. 'deviceName': '192.168.0.55:5556',
  30. 'platformVersion': '5.1',
  31. # apk包名
  32. 'appPackage': 'cn.campsg.xuebaketang3.app',
  33. # apk的launcherActivity
  34. 'appActivity': '.MainActivity',
  35. # 键盘相关
  36. 'unicodeKeyboard': True,
  37. 'resetKeyboard': True,
  38. # 是否自动启动
  39. 'autoLaunch': True,
  40. # 可下载地址,如果测试机无该应用会自动进行下载安装操作
  41. 'app': PATH('xuebayun.apk'),
  42. # 如果测试机已有该应用,不再进行下载安装操作
  43. 'noReset': True
  44. }
  45. self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  46. # WebDriverWait(self.driver, 30, poll_frequency=0.5, ignored_exceptions=None)
  47.  
  48. def tearDown(self):
  49. self.driver.quit()
  50.  
  51. def test_dpApp(self):
  52.  
  53. time.sleep(10)
  54. # 左滑
  55. sw.swipLeft(500, self.driver)
  56. # 左滑
  57. sw.swipLeft(500, self.driver)
  58. # 模拟定位点击"立即体验"
  59. sw.simclick(self.driver, 0.54, 0.89)
  60. time.sleep(2)
  61. self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入学校名称")').send_keys(u'****')
  62. time.sleep(1)
  63. self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入账号")').send_keys('***')
  64. time.sleep(1)
  65. self.driver.find_element_by_android_uiautomator('new UiSelector().text("•••••")').send_keys('***')
  66. time.sleep(1)
  67. self.driver.find_element_by_android_uiautomator('new UiSelector().description("登录")').click()
  68. time.sleep(4)
  69.  
  70. if __name__ == '__main__':
  71. suite = unittest.TestLoader().loadTestsFromTestCase(DpAppTests)
  72. unittest.TextTestRunner(verbosity=2).run(suite)

调用方法swipeandroid.py:

  1. # coding=utf-8
  2. """
  3.  
  4. author: zhuzhuzhujt
  5. datetime: 2019/3/6 11:56 AM
  6. project: appuimtest
  7. software: PyCharm
  8. description:
  9.  
  10. """
  11.  
  12. def getSize(dr):
       # 获取屏幕宽高
  13. x = dr.get_window_size()['width']
  14. y = dr.get_window_size()['height']
  15. return x, y
  16.  
  17. def swipeUp(t, dr):
  18. l = getSize(dr)
  19. x1 = int(l[0] * 0.5)
  20. y1 = int(l[1] * 0.75)
  21. y2 = int(l[1] * 0.25)
  22. dr.swipe(x1, y1, x1, y2, t)
  23.  
  24. def swipeDown(t, dr):
  25. l = getSize(dr)
  26. x1 = int(l[0] * 0.5) # x坐标
  27. y1 = int(l[1] * 0.25) # 起始y坐标
  28. y2 = int(l[1] * 0.75) # 终点y坐标
  29. dr.swipe(x1, y1, x1, y2, t)
  30.  
  31. # 屏幕向左滑动
  32. def swipLeft(t, dr):
  33. l = getSize(dr)
  34. x1 = int(l[0]*0.75)
  35. y1 = int(l[1]*0.5)
  36. x2 = int(l[0]*0.05)
  37. dr.swipe(x1, y1, x2, y1, t)
  38.  
  39. # 屏幕向右滑动
  40. def swipRight(t, dr):
  41. l = getSize(dr)
  42. x1 = int(l[0]*0.05)
  43. y1 = int(l[1]*0.5)
  44. x2 = int(l[0]*0.75)
  45. dr.swipe(x1, y1, x2, y1, t)
  46.  
  47. def simclick(dr, xper, yper):
  48. # 模拟坐标点击
  49. l = getSize(dr)
  50. x1 = int(l[0]*xper)
  51. y1 = int(l[1]*yper)
  52. 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代码参数设置如下:

  1. desired_caps = {
  2. 'automationName': 'Appium',
  3. 'platformName': 'Android',
  4. 'deviceName': '192.168.0.55:5556',
  5. 'platformVersion': '5.1',
  6. # apk包名
  7. 'appPackage': 'cn.campsg.xuebaketang3.app',
  8. # apk的launcherActivity
  9. 'appActivity': '.MainActivity',
  10. # 键盘相关
  11. 'unicodeKeyboard': True,
  12. 'resetKeyboard': True,
  13. # 是否自动启动
  14. 'autoLaunch': True,
  15. # 可下载地址,如果测试机无该应用会自动进行下载安装操作
  16. 'app': PATH('xuebayun.apk'),
  17. # 如果测试机已有该应用,不再进行下载安装操作
  18. 'noReset': True
  19. }

打开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. Wait--查看等待

    --清除等待统计 --===================================================== --清除等待统计 DBCC SQLPERF (N'sys.dm_os_ ...

  2. SqlServer:CTE函数处理递归(WITH语法)

    原文地址:http://www.cnblogs.com/xbf321/archive/2009/04/30/1446833.html 我们在做分类处理的时候,总会遇到递归的处理,比如说地区就是一个例子 ...

  3. .net core i上 K8S(七).netcore程序的服务发现

    上一章我们分享了k8s的网络代理模式,今天我们来分享一下k8s中的服务发现. 1.环境变量模式的服务发现 k8s默认为我们提供了通过环境变量来实现服务发现的功能,前提是 1.需要service在pod ...

  4. django 生命周期

    客户端发送请求 客户端(浏览器) → 发送请求 → 服务器(wsgi) → 解析请求 → 服务器(Middleware) → process_request → 服务器(urls) → 通过路由寻vi ...

  5. tcp 建立连接的三次握手,以及关闭连接的4次挥手

    TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; (客户端问服务器:你爱我吗?) 第二次握手:服务器收到syn包,必须确认客户的 ...

  6. redis 3.0 集群__数据迁移和伸缩容

    添加节点 1,启动2个新的redis-sever, 参照 ( redis 3.0 集群____安装 ),端口号为 7007 和 7008 2,使用命令 redis-trib.rb add-node 命 ...

  7. mysql 快照读MVCC

    mysql的读分快照读和当前读 快照读 是指写的同时,读不阻塞,达到并发的作用 这时候的读 是 记录的历史版本,存在于undo里,当然回滚时就的也是这个undo 当执行一条update语句时,记录本身 ...

  8. Flink学习笔记:Flink Runtime

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  9. css modules

    https://juejin.im/post/5aa727fc518825364001159b http://www.ruanyifeng.com/blog/2016/06/css_modules.h ...

  10. java设计模式学习笔记

    简介 设计模式可以分为五类 接口型 模式:适配器模式,外观模式,合成模式,桥接模式 职责型 模式:单例模式,观察者模式,调停者模式,代理模式,职责链模式,享元模式 构造型 模式:构建者模式,工厂方法模 ...