此篇是承接之前 走进 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的更多相关文章

  1. Xamarin XAML语言教程Xamarin.Forms中构建进度条

    Xamarin XAML语言教程Xamarin.Forms中构建进度条 ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度条总是水平放置的.本节将讲解如何使用进度条. 注意:进度条在 ...

  2. Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

    Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的: ...

  3. Xamarin XAML语言教程Xamarin.Forms中活动指示器的显示隐藏

    Xamarin XAML语言教程Xamarin.Forms中活动指示器的显示隐藏 开发者除了可以在XAML中使用IsRunning属性控制指示器的显示隐藏外,还可以在代码隐藏文件中使用IsRunnin ...

  4. Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)

    Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一) 在Xamarin.Forms中,提供了两个控件用来指示程序的状态和进度.他们分别为活动指示器和进度条.其中,活动指示器 ...

  5. Xamarin Andro教程搭建Xamarin Androidid开发环境(一)

    Xamarin Andro教程搭建Xamarin Androidid开发环境(一) "工欲善其事,必先利其器".对于程序员来说,编程的环境就是其手中的利器.如果没有一个合适方便的编 ...

  6. 【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】

    原文:[Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析] [注意:]团队里总是有人反映卸载Xamarin,清理不完全.之前写过如何完全卸载清理剩余的文件.今天写了Windows下的批命令 ...

  7. 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】

    原文:[Xamarin挖墙脚系列:Xamarin.IOS的程序的结构] 开始熟悉Xamarin在开发IOS的结构!!!!!!! 先看官方 这个是以一个单页面的程序进行讲述的. 1 程序引用的程序集,核 ...

  8. 【Xamarin挖墙脚系列:Xamarin的核心】

    原文:[Xamarin挖墙脚系列:Xamarin的核心] Xamarin 包含两个商业产品 :Xamarin.IOS, Xamarin.Android.他们都是通过开源的基于.Net的Mono项目构建 ...

  9. 【Xamarin挖墙脚系列:Xamarin.Android的API设计准则】

    原文:[Xamarin挖墙脚系列:Xamarin.Android的API设计准则] 前言 楼主也是看着Xamarin的官方文档来的.基本也是照猫画虎.英语勉强凑合.翻译的不对的地方,大家多多指教.(这 ...

随机推荐

  1. select应用于read函数 超时非阻塞方式

    /* * "Timed" read - timout specifies the # of seconds to wait before * giving up (5th argu ...

  2. javascript DOM事件总结

    1 <html> 2 <title>事件</title> 3 <meta charset="utf-8"/> 4 <body& ...

  3. Docker入门之五数据管理

    在Docker使用过程中,需要对数据进行持久化或需要在多个容器之间进行数据共享,就会涉及容器的数据管理操作.主要有两种方式:1.数据卷 2.数据卷容器. 一.数据卷 数据卷是一个可供容器使用的特殊目录 ...

  4. 利用百度地图WEB服务APIGeoCoding API批量地址解析

    Geocoding API包括地址解析和逆地址解析功能: 地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.3 ...

  5. vue数组语法兼容问题

    先来一行代码: <a :href="['NewsNote.asp?ID='+item.ID+'&MenuType=C']" v-text="item.Tit ...

  6. 高德地图测两点距离android比较精确的

    /////参考资料:高德官方:[http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation] 主要三 ...

  7. [转载]Reids配置文件详解

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  8. 寻找bug并消灭系列——记录在Android开发所遇到的bug(二)

    bug 1: bug描述: 无法成功地将edittext中的内容传入数据库中 bug动图: 经过: 最近写了个项目,项目要使用到SQL数据库,由于没有相关知识,便是找到了各种资料开始了自学之旅,在de ...

  9. python 发送邮件,未完

    def send_mail(): try: print "send mail..." # handle = smtplib.SMTP('smtp.163.com', 25) # h ...

  10. zoj 1108 FatMouse's Speed 基础dp

    FatMouse's Speed Time Limit: 2 Seconds      Memory Limit:65536 KB     Special Judge FatMouse believe ...