分享好友 最新动态首页 最新动态分类 切换频道
二.Android手机自动化测试真机运行手机usb调试开关在哪「二.Android手机自动化测试真机运行」
2025-02-13 17:43

手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的。在搞定了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例。期间也遇到了不少问题,不过最终还是搞定了,现在先将测试用例真机运行的方法说一下,然后再罗列我遇到的问题。

真机运行测试用例的方法

 

一,    打开手机的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()函数输入到输入框中。因为一输入就会打开软键盘,而软键盘上面的布局是九宫格的,点击一直出错。

   在网上查了好多办法,人家都是一用的这个函数啊,为什么到我这就不行了呢?我想到了先切换到数字或是英语输入模式,然后再输入,折腾起来很麻烦,还没有成功。最后才发现,是我自己好傻,安装了搜狗输入法的原因,把这个输入法卸掉后就成功了!

 

最新文章
电池补电怎么操作手机补电「电池补电怎么操作」
手机电池不耐用想进行补电操作其实不难。 以华为手机为例先打开手机拨号界面在拨号键盘输入“*#*#2846579#*#*”就能进入手机的工程菜单。然后找到“补电”功能点击就行。但要注意补电是有条件的电池电量得在 60%到 75%之间电池温度要在 70
电视在哪里开投屏功能手机镜像功能在哪「电视在哪里开投屏功能」
  智能电视默认开启投屏功能(系统一般不提供该功能的开关选项),只需保证智能电视和投屏设备(比如手机、平板)接入了同一个WiFi网络,在投屏设备上打开投屏功能并且找到对应的电视型号即可完成投屏,如果非智能电视可外接智能电视盒实
华为手机时间调整设置详解:操作指南与注意事项华为手机怎么调时间「华为手机时间调整设置详解:操作指南与注意事项」
关于华为手机的时间调整设置华为手机是现代人生活中非常普遍使用的智能手机品牌之一,因其功能齐全、操作简便而深受用户喜爱。其中,调整手机时间是一项基础而重要的设置。无论是为了校准系统时间、设置闹钟还是其他用途,掌握如何调整华为
淘宝双12退货后可以再买吗一元手机「淘宝双12退货后可以再买吗」
本文主题淘宝,淘宝问答。现在大家应该是陆陆续续收到自己参与淘宝双12活动的战利品了。如果说双12期间发生了退货,还可不可以重新购买该商品呢?想了解的伙伴们,请往下寻找答案。退货之后是可以重新购买的,退货是不影响购物的。不过如果你
为什么老年人喜欢用纸币现金,而不喜欢用手机支付?手机购物「为什么老年人喜欢用纸币现金,而不喜欢用手机支付?」
老年人是一个特殊群体,毕竟老年人跟年轻人不一样,比如说很多老年人就是到现在都还在用存折,而年轻人都喜欢用银行卡。这是为什么呢?其实要做个对比才知道,那下面来介绍一下到底是为啥。老年人不会用手机现在大多数的人,包括很多年轻人
原创玩转华为手机:快捷键个性化设置,让你的手机独一无二手机快捷键在哪里设置「原创玩转华为手机:快捷键个性化设置,让你的手机独一无二」
华为手机上,快捷键的设置可以大大提高用户的操作效率,方便快捷地访问常用功能或应用。华为手机的快捷键设置主要集中在“设置”应用中,用户可以根据自己的需求进行个性化配置。以下是关于华为手机快捷键设置的详细说明,包括快捷键的种类
够快vivo X6发布 4吋iPhone6c明年2月发vivo新款手机即将上市「够快vivo X6发布 4吋iPhone6c明年2月发」
上周圈新闻不断,而且安卓、iOS、微软三大系统新机可谓齐聚;新苹果似乎板上钉钉,而且最有可能明年2月发布,此外也是本周不可错过的新机;而百元指纹手机也已来袭,总之上周值得关注的新品、新闻还是非常之多,而且越到年底“花样”越多,
如何将安卓手机中的通讯录批量转移到 iPhone安卓手机通讯录怎么导入苹果手机「如何将安卓手机中的通讯录批量转移到 iPhone」
每年年底都是手机的销售旺季,加上最近苹果调低了多款 iPhone 价格,iPhone 的销量在近期有了明显回升。如果你刚刚从安卓手机换到 iPhone,转移通讯录是首要工作,下面教你三个方法快速同步联系人到新的 iPhone。方法一:使用爱思助手恢复
lightroom滤镜lightroom手机版「lightroom滤镜」
lightroom滤镜是一款便利的图片处理软件,多种的图片风格可以自由的进行设置,根据自己的喜好,运用强大的滤镜功能进行美图的修饰,让画面的效果更加的清晰自然,为用户打造不同风格的艺术照片,免费的进行各种素材内容的添加,享受贴心的
Step3预览 iTunes 备份数据,并将其恢复到 Android。安卓手机备份「Step3预览 iTunes 备份数据,并将其恢复到 Android。」
iTunes 是 iPhone 用户常用的工具,可以备份和恢复 iPhone 或 iPad 数据。如果您的 iPhone 或 iPad 不可用,而您手中只有 Android 设备怎么办?您可以将 iTunes 中备份的所有 iPhone 或 iPad 数据恢复到此 Android 设备吗?答案是肯定的,
相关文章
推荐文章
发表评论
0评