2015-09-25 19 views
0

我正在使用新的XCode 7做一些用戶界面測試。我的應用程序如何使用通知,在第一次使用iOS自動問''MyApp'願意發送你的通知「。與unicode字符串不匹配在新的XCode用戶界面測試和測試失敗

當我記錄測試時,Xcode下面寫這幾行:

- (void)testFirstUse { 
    [XCUIDevice sharedDevice].orientation = UIDeviceOrientationPortrait; 

    XCUIApplication *app = [[XCUIApplication alloc] init]; 
    [app.alerts[@"\U201cMyApp\U201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap]; 
    [app.tables/*@[email protected]*/.staticTexts[@"United States"]/*[[".cells.staticTexts[@\"United States\"]",".staticTexts[@\"United States\"]"],[[[-1,1],[-1,0]]],[0]]@[email protected]*/ tap]; 
    [app.navigationBars[@"Select a Country"].buttons[@"Next"] tap]; 

} 

注意的XCode提出的報價,而不是在MyApp的名稱信號unicode的。 運行測試失敗時出現錯誤「找不到警報匹配」。

我試着改變引用信號的unicode,但它也不起作用。

是否清楚? 有人有這個相同的問題?

[更新] 我對這個代碼

1-二期沒有與通過的XCode生成統一碼抽頭後

2-試驗失敗通過系統

顯示警報消息上的錯誤

回答

3

我發現了一個變通方法避免解僱系統警報後崩潰:

我改變了這一行

[app.alerts[@"\U201cMyApp\U201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap]; 

XCUIElement *alert = app.alerts[@"\U0000201cMyApp\U0000201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"];  
if ([alert exists]) { 
    [alert tap]; 
} 

我做了兩個變化

  • unicodes i上的四個0000 n階避免建立在警報失敗
  • 而驗證水龍頭前,以避免測試失敗
+0

如果顯示警告,這對我仍然崩潰。 –

2

您可以通過直接訪問alert.element並點擊收集視圖中的「確定」按鈕來確認警報。

let app = XCUIApplication() 
app.launch() 
// trigger location permission dialog 

app.alerts.element.collectionViews.buttons["Allow"].tap() 

但是,Xcode 7(和Xcode 7.1 Beta)會在成功關閉警報後崩潰。我打開了一個bug report with Apple,並鼓勵所有遇到問題的人複製它。

+0

現在,我得到這個問題TKS @Joe Masilotti。但我注意到,它僅在iOS發佈警報時發生。 – Salmo

+0

正確,@Salmo。你可以放棄你自己的UIAlertView和UIAlertController。 –

+0

我剛找到一個工作。我把它貼在下面。但是我也會像你一樣在Apple上打開一個問題。 – Salmo

1

由Xcode中產生的Unicode字符格式錯誤,因此是Xcode的錯誤。作爲臨時解決辦法,你可以更換

[app.alerts[@"\U201cMyApp\U201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap]; 

[app.alerts[@"\u201cMyApp\u201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap]; 

即所有帶有\ U