走进 Xamarin Test Recorder for Xamarin.Forms
此篇是承接之前 走进 UITest for Xamarin.Forms 的,所以如果没有看过之前的可以先看下之前的 UITest
比起上一篇纯敲代码只适合程序员的 UITest ,这一篇不管是程序员还是测试人员都可以很轻松的来自动生成测试代码
Xamarin Test Recorder 其实和 Coded UI Test 是一样的功能,你只需要点击操作你的程序,它会自动录制下来你的操作生成相应的代码
以下演示基于
- WIN 10 17017 Preview
- VS 2017 15.4
- Visual Studio Emulator for Android ( 5.5" Marshmallow(6.0.0) XXHDPI Phone API Level 23(Marshmallow, 6.0.0) )
- Letv X800+ (Android 6.0 - API 23)
一、准备工作
1.首先去 VS 的 Tools 菜单的 Extensions and Updates 里安装好 Xamarin Test Recorder,我这里安装好了,第一次安装先点 Online 然后搜索 Xamarin Test Recorder 再下载

2.Tools 菜单下的 Visual Studio Emulator for Android 下载好 Emulator 的镜像

3.手机连接上电脑,开启开发者模式,开启 USB 调试模式并允许后台安装应用程序,USB 驱动 Android SDK Manager 里有下载安装
二、开始 Recorder
在解决方案里添加一个 UITest 项目,引用 Android 项目,打开 Test 文件,类上边的 TestFixture 的 Attrubute 前边会有个小 Icon

点击 Icon

如果之前没有生成 apk 包,先生成 Droid 项目,我这里生成好了,直接点击 Select APK,选择 Android 项目下的 Bin/Release/SD.Xamarin.Droid.apk

等待几秒钟(看机器的性能而定,VS左下角会显示 Conneting 之类的),直到下边出现了一个新的 NewTest 的 Test 方法
此时就可以点击 Emulator 或者真机来执行你的操作,Test 方法里会同时记录你的操作的相应代码
当需要等待某个条件的方法 WaitForElement 或者当前屏幕需要截屏时,可以点击方法前的小 Icon 选择 Start Assertion Mode 或者 Take Screenshot
比如需要等待 UI 加载出来某些东西,需要 UserName 和 Password 填写内容,登录后的成功截图等,直到结束后点击 Stop Recording,然后执行 Test ,会看到 Successful 的结果

[Test]
public void NewTest3()
{
_app.Screenshot("Screenshot");
_app.WaitForElement(x => x.Marked("Username"));
_app.Tap(x => x.Marked("Username"));
_app.EnterText(x => x.Marked("Username"), "Name");
//清除文字
_app.ClearText(x => x.Marked("Username"));
_app.EnterText(x => x.Marked("Username"), "Name");
_app.WaitForElement(x => x.Marked("Password"));
_app.Tap(x => x.Marked("Password"));
_app.EnterText(x => x.Marked("Password"), "Password");
//向下滚动
_app.ScrollDown();
//向上滚动
_app.ScrollUp();
//从右向左滑动
_app.SwipeRightToLeft();
//从左向右滑动
_app.SwipeLeftToRight();
//持续选中
_app.TouchAndHold(x => x.Class("FormsImageView"));
//返回
_app.Back();
_app.Tap(x => x.Marked("LoginButton"));
_app.Screenshot("Tapped on view with class: AppCompatButton with text: Login with marked: LoginButton");
}
红色部分是随意试出来的,当 UI 有需要的时候可以使用,这里跑 Test 不需要,只是测试下都有什么功能,运行时注释掉就可以了
还有 AppInitializer 启用了 EnableLocalScreenshots
public static IApp StartApp(Platform platform)
{
if (platform == Platform.Android)
{
return ConfigureApp
.Android
.ApkFile("../../../SD.Xamarin/SD.Xamarin.Droid/bin/Release/SD.Xamarin.Droid.apk")
.EnableLocalScreenshots()
.StartApp();
} return ConfigureApp
.iOS
.AppBundle("../../../SD.Xamarin/SD.Xamarin.iOS/bin/iPhoneSimulator/Release/SD.Xamarin.iOS.app")
.EnableLocalScreenshots()
.StartApp();
}
所以 Release 下会有截图,设置多少截图就会出现多少个,看你需要了

三、操作演示
- Emulator

- 真机

这里很清楚的看到跑同样的测试,在 Name 里闪烁了2次,但是跳不到 Password 里,所以不是手机的问题,应该就是 Bug 了吧
这里也回顾了一下之前手写的 Test 代码,果然还是有不一样的地方,看来还是英文理解的有点问题,但是这样不用写代码更靠谱
结论:英文对程序员很重要
英文对程序员很重要
英文对程序员很重要
走进 Xamarin Test Recorder for Xamarin.Forms的更多相关文章
- Xamarin XAML语言教程Xamarin.Forms中构建进度条
Xamarin XAML语言教程Xamarin.Forms中构建进度条 ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度条总是水平放置的.本节将讲解如何使用进度条. 注意:进度条在 ...
- Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色
Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的: ...
- Xamarin XAML语言教程Xamarin.Forms中活动指示器的显示隐藏
Xamarin XAML语言教程Xamarin.Forms中活动指示器的显示隐藏 开发者除了可以在XAML中使用IsRunning属性控制指示器的显示隐藏外,还可以在代码隐藏文件中使用IsRunnin ...
- Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)
Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一) 在Xamarin.Forms中,提供了两个控件用来指示程序的状态和进度.他们分别为活动指示器和进度条.其中,活动指示器 ...
- Xamarin Andro教程搭建Xamarin Androidid开发环境(一)
Xamarin Andro教程搭建Xamarin Androidid开发环境(一) "工欲善其事,必先利其器".对于程序员来说,编程的环境就是其手中的利器.如果没有一个合适方便的编 ...
- 【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】
原文:[Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析] [注意:]团队里总是有人反映卸载Xamarin,清理不完全.之前写过如何完全卸载清理剩余的文件.今天写了Windows下的批命令 ...
- 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】
原文:[Xamarin挖墙脚系列:Xamarin.IOS的程序的结构] 开始熟悉Xamarin在开发IOS的结构!!!!!!! 先看官方 这个是以一个单页面的程序进行讲述的. 1 程序引用的程序集,核 ...
- 【Xamarin挖墙脚系列:Xamarin的核心】
原文:[Xamarin挖墙脚系列:Xamarin的核心] Xamarin 包含两个商业产品 :Xamarin.IOS, Xamarin.Android.他们都是通过开源的基于.Net的Mono项目构建 ...
- 【Xamarin挖墙脚系列:Xamarin.Android的API设计准则】
原文:[Xamarin挖墙脚系列:Xamarin.Android的API设计准则] 前言 楼主也是看着Xamarin的官方文档来的.基本也是照猫画虎.英语勉强凑合.翻译的不对的地方,大家多多指教.(这 ...
随机推荐
- POJ--3172 Scales (DFS 大容量背包 C++)
Scales Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3148 Accepted: 851 Description ...
- Hibernate中cascade属性的区别
xml对于集合的级联操作属性cascade的取值可以是: none: 不级联操作,默认为none save-update:针对的是当对当前对象进行save或update操作时,要对想关联的对象进行sa ...
- “AOP代理”遇到“双上下文”
最近有小伙伴儿遇到了一个问题来咨询我,问题大致如下: 他在Service层利用Aspect设置了一个Spring AOP代理,在单元测试以及在service层代码上添加代理的时候均没有发现问题,但是在 ...
- Windows和Linux查看和更改mysql连接池
Windows: 查看: 进入mysql 输入:show variables like '%max_connections%'; 更改: 进入MYSQL安装目录 打开MYSQL配置文件 my.ini ...
- UVW源码漫谈(番外篇)—— Emitter
这两天天气凉了,苏州这边连续好几天都是淅淅沥沥的下着小雨,今天天气还稍微好点.前两天早上起来突然就感冒了,当天就用了一卷纸,好在年轻扛得住,第二天就跟没事人似的.在这里提醒大家一下,天气凉了,睡凉席的 ...
- JS(三)
上周介绍了JS中两个比较重要的东西,循环和函数,这周再给大家介绍一下BOM和DOM 一.BOM 1.首先来说一下什么是BOM,BOM即浏览器对象模型,说白一点就是与浏览器进行的交互的对象模型. 2.B ...
- IE无法获得cookie,ie不支持cookie的解决办法,火狐支持
发现用自己的电脑 IE7.0总是无法正常登录,别的电脑都可以. 每次登录后又被重定向回了登录页面. 可换成Firefox和google chrome 却一切OK,后来还把浏览器升级到IE8.0 问题依 ...
- AngularJS -- 指令(创建自定义指令)
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 什么是指令 注:本指南是针对已经熟悉AngularJS基础知识的开发人员.如果你才刚 ...
- 使用Xshell+Xmanager远程监控jvisualvm
使用jvisualvm的remote方式监控服务器端jvisualvm时,不是很方便,因此通过local方式,应该是正路. 一.服务器端(Linux,最小安装模式,没有图形界面) 1.安装xauth ...
- Palindrome poj3974
Palindrome Time Limit: 15000MS Memory Limit: 65536K Total Submissions: 3280 Accepted: 1188 Descr ...