您的位置:首页 > 移动开发

移动端测试教程视频学习笔记

2017-03-20 21:32 253 查看
3块钱从马云家买了一大票视频教程,涉及到Appium、接口测试、性能测试的视频和文档一大堆。虽然视频的年头稍微老了点,但相信对于萌新来说还是有帮助的。

以下是看视频的笔记,俗话说好记性不如烂笔头,记下来以后找起来也容易。先从移动端的看起,这篇blog是记录移动端相关的那些视频的学习笔记。

移动端框架的一些知识点:

框架比较——

Appium:客户端代码、Appium server、移动设备要连成一条通路。一旦设备断开,执行就会失败。自动重签名

Robotium:把客户端代码打成jar包,放在移动端运行。所以即使移动设备和server的通路断了,自动化脚本仍然可以继续运行。需手动重签名

安卓小于4.2的版本自带selendroid,大于4.2的版本自带uiautomator,苹果自带uiautomation(视频中提及,待查)

Appium跑脚本前的准备工作——

需要先获取包名和主activity(比如软件可能打开不是首页,是一个欢迎页面,这个时候就需要知道这个欢迎页面activity是什么,要先到达这个页面才行)。获取方式,有hierarchyviewer.bat(需要root或模拟器),用adb dumps(adb shell dumpsys activity | grep myFocusdActivicy(待查)),使用Appium exe版自动解析(选择apk文件,自动解析,但是要从activity下拉列表里自己找到名字类似launcher这样的那个activity)。

还需要查看页面元素属性。使用sdk>>tools下面的uiautomatorview.bat。通过这个工具可以获得页面上的元素。(需要打开开发者模式,一开始没有打开时报错,Error taking device screenshot: EOF)

跑脚本的时候刷截图一定会报错。所以如果要获取元素,必须在没有脚本运行的时候才能获取。



编写脚本时的工作——

首先要定义一个AppiumDriver,所有指令都是它发出的。

AppiumDriver driver;


然后是apk地址(如果已安装,这一步就不需要),一个File类型对象

File app = new File("url");//已安装的话不需要这行


接下来是一些配置,后面要作为参数传入driver的DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app",app.getAbsolutePath());//已安装的话不需要这行
capabilities.setCapability(CapabilityType.BROWSER_NAME,"");//逗号后面是参数,为空就行
capabilities.setCapability("deviceName","random");//参数写什么都行。但是这一项必须要写
capabilities.setCapability("platformName","Android");//只有三个值可填,Android,iOS,FirefoxOS
capabilities.setCapability("appPackage","com.tencent.mm");//Appium exe版一开始获取到的那个包名
capabilities.setCapability("appActivity","ui.launcherUI");//Appium exe版一开始获取到的那个主activity名
capabilities.setCapability("unicodeKeyboard","True");//有这行就可以支持输入中文了。是Appium启动后在手机上装一个它自己的输入法
capabilities.setCapability("resetKeyboard","True");//没有这行的话,手机自己的输入法调不出来,默认调Appium安装的那个输入法。所以要有这行
capabilities.setCapability("noSign","True");//有些app重签名后无法使用。noSign设置成True意味着不会重签名。如果首次运行脚本时没有设置此项,app已经被重签名的话,只能重新下apk文件带上这行代码来用

AppiumDriver是个抽象类。要用其他类来实现(以安卓为例)
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities)
登录
driver.findElementByName("登录").click();///"登录"是通过UIAutomator Viewer获取的,text
driver.findElementById("com.tencent.mm/ay5").sendKeys("186XXXXXXXX");//登录用手机号
driver.findElementById("com.tencent.mm/er").sendKeys("pwd");//密码。在app端,id在一个页面不一定是唯一的

连接跑完一次应该quit。可以放在finally语句中,保证每次跑完会执行quit。

一些adb命令:

卸载已安装的app

adb uninstall com包名


安装apk包
adb install apk路径

获取主acitivity名(待核实)

adb shell dumpsys activity | grep myFocusdActivicy


其他命令:

appium日志输出到文件中
appium >Desktop\appium.log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: