xcode XCUITest登录苹果

2ledvvac  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在尝试在我的应用程序中自动化一个测试流程,这需要首先登录苹果。我已经弄清楚如何打开设置和登录与测试苹果ID。我已经将其 Package 在一个函数中,并首先调用它(检查它是否已经登录)。当我返回到我的应用程序,并点击登录与苹果按钮,我找不到任何与登录与苹果模态,例如互动。询问我是否要共享我的电子邮件地址,点击“继续密码”等
我尝试设置中断处理程序,但它不会被触发

let test = addUIInterruptionMonitor(withDescription: "") { alert in
            
    print("inside alert:\( alert )")
            
    return true
}

字符串
我试过检查跳板警报,但它不是一个警报

let springboardApp = XCUIApplication(bundleIdentifier: "com.apple.springboard")
springboardApp.alerts.exists


我不知道任何其他技巧,或如何找到这个弹出的捆绑ID。有什么建议吗

slsn1g29

slsn1g291#

设法找到所需的捆绑包标识符com.apple.AuthKitUIService
这不是一个完整的解决方案,可以处理通过模式的所有路径。这只是一个示例,用于在您之前登录时完成流程。把它放在这里,来展示如何把这样的东西 Package 在函数中

sleep(4)
let testApp = XCUIApplication(bundleIdentifier: "com.apple.AuthKitUIService")
        
let continueButton = testApp.buttons["Continue"]
if continueButton.exists {
    continueButton.tap()
}
        
let shareEmailOption = testApp.tables.staticTexts["Share My Email"]
if shareEmailOption.exists {
    shareEmailOption.tap()
}
        
let continueWithPassword = testApp.buttons["Continue with Password"]
if continueWithPassword.exists {
    continueWithPassword.tap()
}
        
testApp.secureTextFields["Password"].tap()

// Type your password

testApp.buttons["Sign In"].tap()

// Wait for something to show up in your app to denote success / failure
let app = XCUIApplication()
.......

字符串
我是如何为任何有类似问题的人找到这个捆绑包标识符的:
在终端中运行xcrun simctl list devices --json会列出所有模拟器。找到您正在使用的UDID,然后:
运行xcrun simctl listapps <UDID>
或转到~/Library/Developer/CoreSimulator/<UDID>/data/Containers/Data并搜索“com.apple”

备注:

上面的代码至少需要在模拟器上登录一个apple id。这可以通过下面的来处理,提供您自己的凭据

public static func handleLoggingInToAppleIdIfNeeded() {
    let settingsApp = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
    settingsApp.launch()
        
    sleep(2)
    if settingsApp.staticTexts[<your user display name>].exists {
        return
    }
        
        
    settingsApp.staticTexts["Sign in to your iPhone"].tap()
    settingsApp.textFields["Email"].tap()
    // Type you email
        
    settingsApp.buttons["Next"].tap()
    sleep(4)
        
    settingsApp.secureTextFields["Required"].tap()
    // Type your password
        
        
    settingsApp.buttons["Next"].tap()
    sleep(4)
        
    settingsApp.buttons["Don't Merge"].tap()
        
    SharedHelpers.shared.waitForButton("Sign Out", exists: true, inApp: settingsApp, delay: 4)
}


然后呼叫唤醒您自己的应用程序

let app = XCUIApplication()
app.launch()
sleep(2)

相关问题