月圆花好歌词怎么样,好不好的默认点评

1349人阅读
Appium(1)
如果你已经搭建好Appium的环境后,接下来想对一款APP的进行自动化测试的话。那么首先得让appium连接你的模拟器或者真机。才能开展测试。本文尝试用不同的方式搭建连接。以适应不同人群的选择。希望有一种方法能够适合你。
1、Appium连接sdk中的模拟器
了解android的人都在知道,android sdk中自带AVD Manager(Android Virtual Device Manager).开发者会使用AVD Manager创建一个android模拟器来调试自己的应用。所以首先我们介绍如何让Appium连接好我们的模拟器
1) 创建一个AVD,并启动
点击Create 后填写相关信息后,点击OK,选中AVD后点击Start
2)启动appium 点击右上角的启动按钮
启动成功后,如下图
或者在cmd命令中输入:appium
2、Appium连接真机
实际开发的过程中我们可能是直接拿真机来调试。所以Appium如何连接真机呢?原理上和上述方式一致。但真机会稍微复杂一点
1)打开手机的USB调试模式
不同的手机打开调试模式的方式不同。一般都在设置中的开发者模式中打开
2)手机连接电脑
使用数据线连接手机与电脑,然后在cmd中输入adb devices查看是否连接成功
新手可能会出现两个问题
一是输入adb命令时提示不是内部命令或者外部命令
那么你需要下载一个adb工具包并存放在C:\Windows\System32目录下(必须强调:与sdk中的adb工具包版本一致!!!!)
二是需要打开手机的usb调试模式并安装好驱动
之后在cmd中输入adb devices 提示如下图则成功
3)启动appium服务
在cmd命令中输入:appium
3、Appium连接第三方模拟器
有时候我们可能不太想用真机或者android sdk中自带的模拟器。而是使用一些三方的android模拟器。例如夜神,逍遥等等
理论上来说可以使用连接真机的方式一样来尝试连接。以下案例使用逍遥模拟器来做演示
1)使用adb连接到逍遥模拟器
网上百度了一番后,发现逍遥模拟器的连接方式是:adb connect
127.0.0.1:21503
所以其udid就是127.0.0.1:21503
2)连接到appium 服务
在cmd命令中输入:appium
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4657次
排名:千里之外
原创:19篇
(1)(2)(1)(2)(2)(8)(1)(1)(1)后使用快捷导航没有帐号?
查看: 5236|回复: 0
Appium 新手常见问题总结
Appium 新手常见问题
Appium的新手问题,简单作一些归类和总结,包括一些务实的技巧和方法,希望对新人有帮助,上手Appium开始写代码的时候个人建议好好学习下,熟练使用Selenium的API对你玩转Appium有相当大(质的飞跃)的帮助!
本帖可以持续补充和持续更新,旨在帮助新人扫除在折腾Appium的时候出现的各种常见入门问题。
友情提醒:
上手写脚本时,GitHub上Appium源码里面的SampleCode中都是一些非常不错的入门例子。
玩转Appium可能需要了解的知识:
1.Python/等语言基础(很重要,这是必备的)
2./IOS应用的相关基础知识(包括Activity等的基本概念)
———– Activity的问题TesterHome里问的人有很多,见下文。
3.一些SDK包中常用的调试命令和技巧 (最起码能简单搭建起模拟器什么的,调试真机的时候,别忘了打开USB调试模式。) ……
Appium新手常见问题
1.启动脚本的时候,提示apk包Could not make a String,这是在释放stings.json的时候出现的错误,一般是由于APK包损坏导致的,确认一下你的APK包是否损坏,最实在的验证方法是直接将APK扔到手机里点一下,看看会不会提示解压APK包时发生错误。
2.Activity错误中两类比较常见:
一类是包名或者Activity参数直接没有写对,会提示:不存在Activity,建议在写脚本的时候在Activity中写上完整的名字,不要缩写,严谨一些不会错。完整包名类似com.xxx.xxx.Activity。
另外一类是没有写对启动Activity,虽然你写对了Activity,但是你写的不是启动Activity,会报一个”XXX Never XXX”的错误。
包名参数和Activity这两个参数可以在Manifest.xml中清楚的看到
关于如何获取AndroidManifest.xml,可以参考一下apktool的用法,使用起来非常简单
包名在这里看:
&manifest android:versionCode=”12″ android:versionName=”2.6.0.0.0″ package=”com.xxx.xxx”
一般位于XML定义的下一行
启动Activity在这里看,带有LAUNCHER关键字
123456复制代码&activity android:theme=&@*android:style/Theme.NoTitleBar& android:label=&@string/app_name& android:name=&com.xxx.xxx.SplashActivity& android:launchMode=&singleTop& android:screenOrientation=&portrait& android:configChanges=&keyboardHidden|orientation&&&intent-filter&&action android:name=&android.intent.action.MAIN& /&&category android:name=&android.intent.category.LAUNCHER& /&&/intent-filter&&/activity&复制代码
那么,本例中就是com.xxx.xxx.SplashActivity
3.关于如何定位元素的问题
如果作为Appium的玩家,你问出这样的问题,我认为你是Selenium的基础不牢靠。
id,classname,name,xpath,tagname……,其实很多元素定位的方法都跟DOM有关,如果对前端熟悉的童鞋上手这个不会有难度,当然了,对于APP来讲,你可以借助一些现成的进行嗅探
比如 uiautomatorviewer 不用单独下载,因为你在折腾Appium的时候你肯定会下载SDK,很幸运,这玩意就是在SDK中自带的,所以如果你已经设置了环境变量的话,直接敲命令就可以启动他了。
4.关于如何等待一个元素的出现而不用一些笨拙粗暴的time.sleep()方法
我相信这是一个非常大众化的需求,我们需要等待某一个元素的出现以此来让我们的脚本进入到下一个Step,这个等待方法最好能够设置超时时间,然后找到后迅速callback。我们也很幸运!如果你仔细看Selenium的API你会发现这么一个东西:
1234567891011复制代码from selenium import webdriverfrom mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0ff = webdriver.Firefox()ff.get(&http://somedomain/url_that_delays_loading&)try:element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, &myDynamicElement&)))finally:ff.quit()复制代码
原来,我们的webdriver.support.ui中有一个强大的WebDriverWait可以帮助我们完成这个事情。
他提供了一个极其实用的until方法,until方法可以传入一个条件型的参数,这个条件型参数来自selenium.webdriver.support中的expected_conditions,里面定义了一些”call“可调用的类,比如我们这里常用的
presence_of_element_located,意思就是等待某一元素出现(被定位到)
更多关于API上的惊喜可以猛戳这里:
5.关于Appium For Windows
不喜欢折腾的童鞋可以选择在Windows端快速入门Appium,Appium For Windows使用起来极其简单,下载完成后直接双击Appium.exe,然后点击LAUNCHER即可。
6.想到了再写吧……
可能对你有帮助的一些在线API手册
这里我更多的是提供了Python的例子,其他同理。
Python相关的一些知识
Python API / Nose / Unittest 官方例子中所用到的东西,很多新人看不懂Setup和TearDown是有原因的,(&_&)
& & & & & & & & & & & & & & & & & & & & & & & & & & & &
转载请注明: >>
o o o o o o[ios]Appium 试图启动应用程序而不是真正的设备模拟器
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
appium: 1.4.13
xcode: 7.1
desired_caps = dict()
desired_caps['platformName'] = 'iOS'
desired_caps['platformVersion'] = '9.1'
desired_caps['deviceName'] = 'iPhone 6'
desired_caps['app'] = os.path.abspath('/Users/Test.app')
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
它总是选择模拟器即使真实设备相连。
我试图在设备上运行。
模拟器保持启动和关闭。
info: [debug] Starting command proxy.
info: [debug] Instruments socket server started at /tmp/instruments_sock
info: [debug] Starting instruments
info: [debug] Instruments is at: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments
info: Launching instruments
info: [debug] Attempting to run app on iPhone 6 (9.1) [
info: On xcode 7.0, instruments-without-delay does not work, skippinginstruments-without-delay
info: [debug] Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate -D /tmp/appium-instruments/instrumentscli0.trace -w "iPhone 6 (9.1) [" /Users/Test.app -e UIASCRIPT "/Users/Library/Application Support/appium/bootstrap/bootstrap-bf740aef.js" -e UIARESULTSPATH /tmp/appium-instruments
info: [debug] And launch timeouts (in ms): {"global":90000}
info: [debug] [INST] Waiting for device to boot...
info: [debug] [INST STDERR]
13:29:31.895 instruments[] WebKit Threading Violation - initial use of WebKit from a secondary thread.
info: [debug] [INST STDERR]
13:29:53.976 instruments[] Attempting to change event horizon while disengage
info: [debug] [INST STDERR]
13:29:53.976 instruments[] Attempting to change event horizon while disengage
info: [debug] [INST STDERR] Instruments Trace Error : Target failed to run: The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 1.) : Failed to launch process with bundle identifier 'com.apsalar.sdkBatchTest2'
info: [debug] [INSTSERVER] Instruments exited with code 253
info: [debug] Killall instruments
info: [debug] Instruments crashed on startup
info: [debug] Attempting to retry launching instruments, this is retry #1
info: [debug] Killall Simulator
info: Launching instruments
info: [debug] Attempting to run app on iPhone 6 (9.1) [
info: On xcode 7.0, instruments-without-delay does not work, skippinginstruments-without-delay
info: [debug] Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate -D /tmp/appium-instruments/instrumentscli0.trace -w "iPhone 6 (9.1) [" /Users/Test.app -e UIASCRIPT "/Users/Library/Application Support/appium/bootstrap/bootstrap-bf740aef.js" -e UIARESULTSPATH /tmp/appium-instruments
info: [debug] And launch timeouts (in ms): {"global":90000}
info: [debug] [INST STDERR]
13:30:00.033 instruments[] **WebKit Threading Violation - initial use of WebKit from a secondary thread.**
info: [debug] [INST] Waiting for device to boot...
info: [debug] [INST STDERR]
13:30:07.851 instruments[] Attempting to change event horizon while disengage
info: [debug] [INST STDERR]
13:30:07.851 instruments[] Attempting to change event horizon while disengage
info: [debug] [INST STDERR] Instruments Trace Error : Target failed to run: The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 1.) : Failed to launch process with bundle identifier 'com.apsalar.sdkBatchTest2'
info: [debug] [INSTSERVER] Instruments exited with code 253
info: [debug] Killall instruments
解决方法 1:
添加"udid"功能并输入您的设备那里 udid。
capabilities.setCapability("deviceName", "phoneUDID");第四章&Appium真机运行测试用例讲解
&-----手机自动化之Appium
手机自动化测试用例虽然可以在模拟器上运行,可是模拟器毕竟和真机还是有区别的。在第二章我们讲到了模拟器上运行测试用例后,我又花了两天的时间,研究了一下真机运行测试用例。只有在真机上运行,才能真正发现出问题。期间也遇到了不少问题,不过最终还是搞定了,现在先将测试用例真机运行的方法说一下,然后再罗列我遇到的问题。
4.1真机运行测试用例的方法
打开手机的USB调试模式
不同的手机有不同的方法打开usb调试模式,可是去网上查一下你手机的调试模式打开办法()。还有一个可以去网上下载一个“USB调试快捷开关”的应用,将手机的USB调试模式打开。
连接手机到电脑
将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices -l
查看UDID,如下图4.1所示:
图4.1 查看手机信息
如果有输出,就表示连接成功。
启动Appium服务
根据查到的UDID启动appium服务,运行命令:
#&appium -a 127.0.0.1 -p 4723 &&U &4ca1558c &--no-reset
参数后面跟的一串字符就是手机的UDID,这个是通过第二步查到的。
图4.2 启动Appium服务
&当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行测试脚本了。
安装要测试的App
当然我们要需要在测试机上安装被测试的App,去网上下载最新的众筹网的App,然后安装到测试机上。注意要确保安装的App的版本,手机系统版本,和android Sdk的API版本相同或是兼容。
五,测试脚本的编写及运行
& &真机运行的测试脚本与模拟器上几乎是相同的,就是有些儿配置不太一样。具体脚本详解如下:
#-*- coding: UTF-8 -*-
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__':
unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
另开一个cmd窗口,运行测试脚本(python XXXX.py)即可。此时服务端就会有输出,程序在手机上运行。打开App后,输入用户名和密码,然后进入应用后停了10秒后关闭App。
注:在测试用例运行过程中,要在手机上安装Appium Settings,按提示允许安装就可以了。
真机运行的时候遇到的问题
(1)电脑连接到手机后,运行adb
devices &l无信息输出?
& &电脑连接手机后,一般情况下会提示安装驱动程序,如果手机较新的话可能不会提示,但是运行adb devices &l后无任何输出。此时只需要安装91手机助手或是其他手机管理工具,安装上相应的驱动程序,再次连接就可以了。
(2)运行程序后提示:?
&&当我从网上学习了脚本的编写方法后,模拟着写了一个我自己的测试用例,可是连接到真机后,运行脚本时,在执行过程中出现了上面的错误提示,可是程序无法运行。
在网上查看了一下,找到了问题所在:是程序的'appPackage'和‘appActivity’不正确,查找了解决办法,有说要反编译被测试的app,然后查找里面的appactivity。可是反编译后才发现,里面的东西好多,找不到开始的时候appactivity是哪儿个?只好再找其他的办法了。
最后在一个论坛的回复中找到了解决办法:将setup函数中的两行代码注释掉就可以了。
desired_caps['appPackage']='com.subject.zhongchou'
desired_caps['appActivity']='.ZhongChou'
(3)在程序执行这程中,用Send_keys()函数对输入框输入值的时候,无法输入?
&当我执行测试用例的时候,发现用户名和密码无法用send_keys()函数输入到输入框中。因为输入就会打开软键盘,而软键盘上面的布局是九宫格的,点击一直出错。
&在网上查了好多办法,人家都是一用的这个函数啊,为什么到我这就不行了呢?我想到了先切换到数字或是英语输入模式,然后再输入,折腾起来很麻烦,还没有成功。最后才发现,是我自己好傻,安装了搜狗输入法的原因,把这个输入法卸掉后就成功了!
本章我们讲解了如何在真实的手机上运行测试用例,当然我们仍然是以众筹网App的登录为例的。通过分步介绍,我们可以一步步地把测试用例在真机上运行起来,这也是我们真正开始我们的自动化测试用例编写之路之前的准备。环境,Appium API和真机运行方法我们都讲解完后,从下一章我们开始,讲解具体的测试用例应该如何入手。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 月圆花好邓丽君 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信