2. UITest相關APIs

来源:http://www.cnblogs.com/luerniu/archive/2017/02/13/6393132.html
-Advertisement-
Play Games

1. XCUIApplication 這是你正在測試的應用的代理。它能讓你啟動應用,這樣你就能執行測試了。它每次都會新起一個進程,這會多花一些時間,但是能保證測試應用時的狀態是乾凈的,這樣你需要處理的變數就少了些。 2. XCUIElement 這是你正在測試的應用中UI元素的代理。每個元素都有類型 ...


1. XCUIApplication

這是你正在測試的應用的代理。它能讓你啟動應用,這樣你就能執行測試了。它每次都會新起一個進程,這會多花一些時間,但是能保證測試應用時的狀態是乾凈的,這樣你需要處理的變數就少了些。

- (void)launch;//啟動應用。如果目標應用已運行,首先終止應用,然後再次啟動應用。
- (void)terminate;//關閉應用。
@property (nonatomic, copy) NSArray <NSString *> *launchArguments;//數組對象,保存啟動參數。
@property (nonatomic, copy) NSDictionary <NSString *, NSString *> *launchEnvironment;//字典對象,保存啟動環境變數

2. XCUIElement

這是你正在測試的應用中UI元素的代理。每個元素都有類型和標識符,結合二者就能找到應用中的UI元素。所有的元素都會嵌套在代表你的應用的樹中。

@property (readonly) BOOL exists;
這個控制項是否存在(不管被遮擋或者不在當前屏幕內都是YES)

@property (readonly, getter = isHittable) BOOL hittable;
這個控制項是否能找到一個點可以點擊

- (XCUIElementQuery *)descendantsMatchingType \:(XCUIElementType)type;
在這個元素里按照固定的類型尋找其所有的子元素,如:
在Table的Cell里尋找所有的子Button

locButton = [cell descendantsMatchingType:XCUIElementTypeButton];

- (XCUIElementQuery *)childrenMatchingType \:(XCUIElementType)type;
在這個元素里按照固定的類型尋找其所有直接的子元素(即無法查找子元素的子元素),和上一個方法類似。

- (XCUICoordinate *)coordinateWithNormalizedOffset \:(CGVector)normalizedOffset;

在這個控制項里根據CGVector的比例返回一個點。

XCUICoordinate *bot = [window coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.5)];//在Window中X比例為0.5,Y比例為0.5的一個點

@property (readonly, copy) NSString *debugDescription;

上面已經敘述過了,就是查詢的調試信息。

- (void)typeText :(NSString *)text;

可以用這個方法對UITextField 和 UITextView等輸入,但調用之前需要確保鍵盤已經彈出,否則會出錯。

- (void)tap;
單擊這個控制項一次

- (void)doubleTap;
雙擊這個控制項一次

- (void)twoFingerTap;
雙指點擊

- (void)tapWithNumberOfTaps :(NSUInteger)numberOfTaps numberOfTouches :(NSUInteger)numberOfTouches;

可以指定點擊幾次,每次用幾個手指

- (void)pressForDuration :(NSTimeInterval)duration;
長按手勢,可以指定長按的時間。

- (void)pressForDuration :(NSTimeInterval)duration thenDragToElement :(XCUIElement *)otherElement;
先長按然後再拖動到另一個元素的位置,多用於TableView的MoveCell。

- (void)swipeUp;
- (void)swipeDown;
- (void)swipeLeft;
- (void)swipeRight;
上下左右滑動的手勢。

- (void)pinchWithScale \:(CGFloat)scale velocity :(CGFloat)velocity;
Pinch的手勢。

- (void)rotate \:(CGFloat)rotation withVelocity :(CGFloat)velocity;
旋轉的手勢。

- (void)adjustToNormalizedSliderPosition :(CGFloat)normalizedSliderPosition;
設置一個Slider當前的Value值,設置的值的範圍在[0 , 1]。

@property (readonlyCGFloat normalizedSliderPosition;
返回一個Slider當前Value的值,值的範圍在[0 , 1]。

 

- (void)adjustToPickerWheelValue :(NSString *)pickerWheelValue;
設置一個PikerView的值為多少。

3. XCUIElementAttributes

/*! The accessibility identifier. */
@property (readonly) NSString *identifier;

/*! The frame of the element in the screen coordinate space. */
@property (readonly) CGRect frame;

/*! The raw value attribute of the element. Depending on the element, the actual type can vary. */
@property (readonly, nullable) id value;

/*! The title attribute of the element. */
@property (readonly, copy) NSString *title;

/*! The label attribute of the element. */
@property (readonly, copy) NSString *label;

/*! The type of the element. /seealso XCUIElementType. */
@property (readonly) XCUIElementType elementType;

/*! Whether or not the element is enabled for user interaction. */
@property (readonly, getter = isEnabled) BOOL enabled;

/*! The horizontal size class of the element. */
@property (readonly) XCUIUserInterfaceSizeClass horizontalSizeClass;

/*! The vertical size class of the element. */
@property (readonly) XCUIUserInterfaceSizeClass verticalSizeClass;

/*! The value that is displayed when the element has no value. */
@property (readonly, nullable) NSString *placeholderValue;

/*! Whether or not the element is selected. */
@property (readonly, getter = isSelected) BOOL selected;

#if TARGET_OS_TV
/*! Whether or not the elment has UI focus. */
@property (readonly) BOOL hasFocus;

4. XCUIElementTypeQueryProvider協議

@property (readonly, copy) XCUIElementQuery *touchBars;
@property (readonly, copy) XCUIElementQuery *groups;
@property (readonly, copy) XCUIElementQuery *windows;
@property (readonly, copy) XCUIElementQuery *sheets;
@property (readonly, copy) XCUIElementQuery *drawers;
@property (readonly, copy) XCUIElementQuery *alerts;
@property (readonly, copy) XCUIElementQuery *dialogs;
@property (readonly, copy) XCUIElementQuery *buttons;
@property (readonly, copy) XCUIElementQuery *radioButtons;
@property (readonly, copy) XCUIElementQuery *radioGroups;
@property (readonly, copy) XCUIElementQuery *checkBoxes;
@property (readonly, copy) XCUIElementQuery *disclosureTriangles;
@property (readonly, copy) XCUIElementQuery *popUpButtons;
@property (readonly, copy) XCUIElementQuery *comboBoxes;
@property (readonly, copy) XCUIElementQuery *menuButtons;
@property (readonly, copy) XCUIElementQuery *toolbarButtons;
@property (readonly, copy) XCUIElementQuery *popovers;
@property (readonly, copy) XCUIElementQuery *keyboards;
@property (readonly, copy) XCUIElementQuery *keys;
@property (readonly, copy) XCUIElementQuery *navigationBars;
@property (readonly, copy) XCUIElementQuery *tabBars;
@property (readonly, copy) XCUIElementQuery *tabGroups;
@property (readonly, copy) XCUIElementQuery *toolbars;
@property (readonly, copy) XCUIElementQuery *statusBars;
@property (readonly, copy) XCUIElementQuery *tables;
@property (readonly, copy) XCUIElementQuery *tableRows;
@property (readonly, copy) XCUIElementQuery *tableColumns;
@property (readonly, copy) XCUIElementQuery *outlines;
@property (readonly, copy) XCUIElementQuery *outlineRows;
@property (readonly, copy) XCUIElementQuery *browsers;
@property (readonly, copy) XCUIElementQuery *collectionViews;
@property (readonly, copy) XCUIElementQuery *sliders;
@property (readonly, copy) XCUIElementQuery *pageIndicators;
@property (readonly, copy) XCUIElementQuery *progressIndicators;
@property (readonly, copy) XCUIElementQuery *activityIndicators;
@property (readonly, copy) XCUIElementQuery *segmentedControls;
@property (readonly, copy) XCUIElementQuery *pickers;
@property (readonly, copy) XCUIElementQuery *pickerWheels;
@property (readonly, copy) XCUIElementQuery *switches;
@property (readonly, copy) XCUIElementQuery *toggles;
@property (readonly, copy) XCUIElementQuery *links;
@property (readonly, copy) XCUIElementQuery *images;
@property (readonly, copy) XCUIElementQuery *icons;
@property (readonly, copy) XCUIElementQuery *searchFields;
@property (readonly, copy) XCUIElementQuery *scrollViews;
@property (readonly, copy) XCUIElementQuery *scrollBars;
@property (readonly, copy) XCUIElementQuery *staticTexts;
@property (readonly, copy) XCUIElementQuery *textFields;
@property (readonly, copy) XCUIElementQuery *secureTextFields;
@property (readonly, copy) XCUIElementQuery *datePickers;
@property (readonly, copy) XCUIElementQuery *textViews;
@property (readonly, copy) XCUIElementQuery *menus;
@property (readonly, copy) XCUIElementQuery *menuItems;
@property (readonly, copy) XCUIElementQuery *menuBars;
@property (readonly, copy) XCUIElementQuery *menuBarItems;
@property (readonly, copy) XCUIElementQuery *maps;
@property (readonly, copy) XCUIElementQuery *webViews;
@property (readonly, copy) XCUIElementQuery *steppers;
@property (readonly, copy) XCUIElementQuery *incrementArrows;
@property (readonly, copy) XCUIElementQuery *decrementArrows;
@property (readonly, copy) XCUIElementQuery *tabs;
@property (readonly, copy) XCUIElementQuery *timelines;
@property (readonly, copy) XCUIElementQuery *ratingIndicators;
@property (readonly, copy) XCUIElementQuery *valueIndicators;
@property (readonly, copy) XCUIElementQuery *splitGroups;
@property (readonly, copy) XCUIElementQuery *splitters;
@property (readonly, copy) XCUIElementQuery *relevanceIndicators;
@property (readonly, copy) XCUIElementQuery *colorWells;
@property (readonly, copy) XCUIElementQuery *helpTags;
@property (readonly, copy) XCUIElementQuery *mattes;
@property (readonly, copy) XCUIElementQuery *dockItems;
@property (readonly, copy) XCUIElementQuery *rulers;
@property (readonly, copy) XCUIElementQuery *rulerMarkers;
@property (readonly, copy) XCUIElementQuery *grids;
@property (readonly, copy) XCUIElementQuery *levelIndicators;
@property (readonly, copy) XCUIElementQuery *cells;
@property (readonly, copy) XCUIElementQuery *layoutAreas;
@property (readonly, copy) XCUIElementQuery *layoutItems;
@property (readonly, copy) XCUIElementQuery *handles;
@property (readonly, copy) XCUIElementQuery *otherElements;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一點公益app開發,聯繫微電188-2624-7572. 站在互聯網的風口,任何商業模式拼的都是速度。一點公益項目平臺、一點公益APP受追捧是有原因的:一點公益平臺倡導的“互聯網+公益”模式,商家直接讓利給公益平臺,平臺通過大數據計算分析,進行財富的二次分配。這種讓利幅度之大,持續之久,是傳統商業模 ...
  • Java IO流學習總結七:Commons IO 2.5 FileUtils 轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/54972773 本文出自 "【趙彥軍的博客】" 在上面的幾篇文章中,介紹了IO的常規用法,今天介紹 框架的 ...
  • 刪除小電池圖標及百分比 a、SystemUI/.../statusbar/policy/BatteryController.java mBatteryPercentageView.setVisibility(View.GONE);———————右上角百分比 c、SystemUI/.../status ...
  • 近期公司開發工具要從eclipse轉向Androidstudio,安裝好as後當然迫不及待地要將快捷鍵修改為eclipse中的快捷鍵啦,下麵是個人的一些小的總結。 1.首先當然要打開快捷鍵的設置界面啦:File>Settings>Keymap 界面如下 2.在圖中的下拉菜單中,即可選擇將快捷鍵設置為 ...
  • Java IO流學習總結六:ByteArrayInputStream、ByteArrayOutputStream 轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/54946762 本文出自 "【趙彥軍的博客】" 類的繼承關係 可以將字 ...
  • #pragma mark - 1.創建TextField - (void)createTextField { UITextField *textFiled = [[UITextField alloc] initWithFrame:CGRectMake(20, 40, 250, 45)]; textF ...
  • Android中通過Intent調用其他應用的方法(轉) Android中兩種序列化方式的比較Serializable和Parcelable http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1201/655.html Androi ...
  • activity的啟動模式一共有四種:standard、singleTop、singleTask和singleInstance,可以在AndroidMannifest.xml中通過給<activity>標簽指定android:launchMode屬性來選擇啟動模式。 1.standard 是活動預設 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...