二.Android手机自动化测试真机运行
手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的。在搞定了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例。期间也遇到了不少问题,不过最终还是搞定了,现在先将测试用例真机运行的方法说一下,然后再罗列我遇到的问题。
真机运行测试用例的方法
一, 打开手机的USB调试模式
不同的手机有不同的方法打开usb调试模式,可是去网上查一下你手机的调试模式打开办法(http://wenku.baidu.com/view/3077f06c25c52cc58bd6be15.html?re=view)。还有一个可以去网上下载一个“USB调试快捷开关”的应用,将手机的USB调试模式打开。
二, 连接手机到电脑
将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices -l 查看UDID,如下图所示:
如果有输出,就表示连接成功。
三, 启动Appium服务
根据查到的UDID启动appium服务,运行命令:
#>appium -a 127.0.0.1 -p 4723 –U 4ca1558c --no-reset
-U 参数后面跟的一串字符就是手机的UDID,这个是通过第二步查到的。
当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行测试脚本了。
四, 测试脚本的编写及运行
真机运行的测试脚本与模拟器上几乎是相同的,就是有些儿配置不太一样。具体脚本详解如下:
#-*- coding: UTF-8 -*-
import os
import time
import unittest
from selenium import webdriver
from lib2to3.pgen2.driver import Driver
from lib2to3.tests.support import driver
PATH=lambda p:os.path.abspath(
os.path.join(os.path.dirname(__file__),p)
)
global driver
class LoginAndroidTests(unittest.TestCase):
def setUp(self):
desired_caps={}
desired_caps['device'] = 'android'
desired_caps['platformName']='Android'
desired_caps['browserName']=''
desired_caps['version']='4.4.2'
desired_caps['deviceName']='MIUI-KXCCNBF22.0'#这是测试机的型号,可以查看手机的关于本机选项获得
desired_caps['app'] = PATH('D:\\AndroidAutomation\\AndroidAutoTest\\app\\zhongchou.apk')#被测试的App在电脑上的位置
#如果知道被测试对象的apppage,appActivity可以加上下面这两个参数,如果不知道,可以注释掉,不影响用例执行
#desired_caps['appPackage']='com.subject.zhongchou'
#desired_caps['appActivity']='.ZhongChou'
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
def tearDown(self):
self.driver.quit()
def test_login(self):
time.sleep(10)
#点击“注册登录”按钮 button=self.driver.find_element_by_id("com.subject.zhongchou:id/register_button")
button.click()
time.sleep(5)
#登录
name =self.driver.find_element_by_id('com.subject.zhongchou:id/loginnumber_phone')
name.click()
name.send_keys('183XXXXXX05')
psd =self.driver.find_element_by_id('com.subject.zhongchou:id/loginnumber_password')
psd.click()
psd.send_keys('XXXXXXXX’)
blogin=self.driver.find_element_by_id('com.subject.zhongchou:id/go_numberlogin')
blogin.click()
time.sleep(10)
#此处加上检测登录是否成功的代码
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
另开一个cmd窗口,运行测试脚本(python XXXX.py)即可。此时服务端就会有输出,程序在手机上运行。
注:在测试用例运行过程中,要在手机上安装Appium Settings,按提示允许安装就可以了。
研究真机运行的时候遇到的问题
1,电脑连接到手机后,运行adb devices –l无信息输出?
电脑连接手机后,一般情况下会提示安装驱动程序,如果手机较新的话可能不会提示,但是运行adb devices –l后无任何输出。此时只需要安装91手机助手或是其他手机管理工具,安装上相应的驱动程序,再次连接就可以了。
2,运行程序后提示:WebDriverException: Message: u"A new session could not be created. (Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity)"?
当我从网上学习了脚本的编写方法后,模拟着写了一个我自己的测试用例,可是连接到真机后,运行脚本时,在执行过程中出现了上面的错误提示,可是程序无法运行。
在网上查看了一下,找到了问题所在:是程序的'appPackage'和‘appActivity’不正确,查找了解决办法,有说要反编译被测试的app,然后查找里面的appactivity。可是反编译后才发现,里面的东西好多,找不到开始的时候appactivity是哪儿个?只好再找其他的办法了。
最后在一个论坛的回复中找到了解决办法:将setup函数中的两行代码注释掉就可以了。
desired_caps['appPackage']='com.subject.zhongchou'
desired_caps['appActivity']='.ZhongChou'
3,在程序执行这程中,用Send_keys()函数对输入框输入值的时候,无法输入?
当我执行测试用例的时候,发现用户名和密码无法用send_keys()函数输入到输入框中。因为一输入就会打开软键盘,而软键盘上面的布局是九宫格的,点击一直出错。
在网上查了好多办法,人家都是一用的这个函数啊,为什么到我这就不行了呢?我想到了先切换到数字或是英语输入模式,然后再输入,折腾起来很麻烦,还没有成功。最后才发现,是我自己好傻,安装了搜狗输入法的原因,把这个输入法卸掉后就成功了!
二.Android手机自动化测试真机运行的更多相关文章
- Android手机自动化测试真机运行
一, 打开手机的USB调试模式 不同的手机有不同的方法打开usb调试模式,可是去网上查一下你手机的调试模式打开办法(http://wenku.baidu.com/view/3077f06c25c ...
- Android手机 Fildder真机抓包
Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指co ...
- Android手机Fiddler真机抓包
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许用户监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统 ...
- 【Android Studio安装部署系列】七、真机运行项目
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下真机运行项目的操作步骤. 手机连接电脑 将手机通过数据线连接到电脑上,此时电脑会自动下载安装驱动程序.如果没有安装上的话, ...
- 安卓第一课:android studio 的环境搭建与真机运行以及遇到的问题
AS的下载: https://developer.android.com/studio/index.html AS的安装: android studio, sdk, virtual device都要安 ...
- 第四章 Appium真机运行测试用例讲解
-----手机自动化之Appium 手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的.在第二章我们讲到了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例 ...
- Appium学习之驱动真机运行
一.Appium工具的简单原理 Appium工具可以分为:客户端(appium-client).服务端(appium-server)和移动设备端(模拟器或者真机).客户端支持多语言,如:python- ...
- android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法
android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法 问题是没有权限,用360手机助手或豌豆荚也是看不见的. 简单的办法是用RE文件管理 ...
- unity工程接入Android sdk后真机测试解锁屏后退出的解决
unity工程接入如91.移动支付等Android sdk后,真机运行尤其是在4.0+以上坏境,往往会出现解锁屏后退出的情况,解决办法如下: 可以在AndroidManifest.xml中所有的con ...
随机推荐
- EC笔记:第三部分:14、在资源管理类中小心Copying行为
场景 上一节实现了智能指针,其中的拷贝构造函数和赋值运算符是通过增加/减少指针的引用计数来操作的.但是如果是管理一个独占资源呢?我们希望在一个资源使用时被锁定,在使用完毕后被释放. #include ...
- Python3.5安装及opencv安装
Python安装注意事项(版本3.5,系统windows)1.安装好Python后将D:\Program Files\Python.D:\Program Files\Python\Scripts加入P ...
- jstack+top定位性能问题
定位性能问题,尤其是cpu使用率过高时,经常需要查找cpu消耗较高的线程,然后查看其堆栈,从而进入代码定位问题. 该场景下, jstack+top是一种非常经典的方式. jstack+top: 1 ...
- Atitit.安全性方案规划设计4gm v1 q928
Atitit.安全性方案规划设计4gm v1 q928 1. 安全架构设计与功能安全检测1 2. https1 3. 账号安全体系1 4. 配置文件安全 1 5. 源码加密与安全2 6. 最高强度的 ...
- SlidingMenu 侧滑菜单的用法
很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,将侧滑菜单引入项目的方式很多中,先通过例子介绍各种引入方式,然后给大家展示个 ...
- 用SVN check out项目后第三方库丢失
曾经用Cornerstone check out 一份项目下来,但其中第三方.a库始终丢失,项目报错,研究后找到了以下解决方法: 首先,Xcode默认忽略.a 文件.所以无法提交到svn服务器,但是很 ...
- Lucene 单域多条件查询
在Lucene 中 BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表 ...
- [Erlang 0114] Erlang Resources 小站 2013年7月~12月资讯合集
Erlang Resources 小站 2013年7月~12月资讯合集,方便检索. 附 2013上半年盘点: Erlang Resources 小站 2013年1月~6月资讯合集 小站地 ...
- Yii 开发微信 '您提交的数据无法被验证'
使用Yii开发微信时,出现 [error][yii\web\HttpException:] exception 'yii\web\BadRequestHttpException' with messa ...
- python学习笔记4-正则表达式
import re -- 所有正则表达式相关的功能都包含在re模块中 re.sub() -- 字符串替换 >>> import re >>> s= "10 ...