此篇是承接以前 走進 UITest for Xamarin.Forms 的,因此若是沒有看過以前的能夠先看下以前的 UITesthtml
比起上一篇純敲代碼只適合程序員的 UITest ,這一篇無論是程序員仍是測試人員均可以很輕鬆的來自動生成測試代碼程序員
Xamarin Test Recorder 其實和 Coded UI Test 是同樣的功能,你只須要點擊操做你的程序,它會自動錄製下來你的操做生成相應的代碼app
如下演示基於post
1、準備工做性能
1.首先去 VS 的 Tools 菜單的 Extensions and Updates 裏安裝好 Xamarin Test Recorder,我這裏安裝好了,第一次安裝先點 Online 而後搜索 Xamarin Test Recorder 再下載測試
2.Tools 菜單下的 Visual Studio Emulator for Android 下載好 Emulator 的鏡像url
3.手機鏈接上電腦,開啓開發者模式,開啓 USB 調試模式並容許後臺安裝應用程序,USB 驅動 Android SDK Manager 裏有下載安裝spa
2、開始 Recorder調試
在解決方案裏添加一個 UITest 項目,引用 Android 項目,打開 Test 文件,類上邊的 TestFixture 的 Attrubute 前邊會有個小 Iconorm
點擊 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 下會有截圖,設置多少截圖就會出現多少個,看你須要了
3、操做演示
這裏很清楚的看到跑一樣的測試,在 Name 裏閃爍了2次,可是跳不到 Password 裏,因此不是手機的問題,應該就是 Bug 了吧
這裏也回顧了一下以前手寫的 Test 代碼,果真仍是有不同的地方,看來仍是英文理解的有點問題,可是這樣不用寫代碼更靠譜
結論:英文對程序員很重要
英文對程序員很重要
英文對程序員很重要