在Swift中的UITest中关闭应用内应用商店评级

问题描述 投票:0回答:1

您好亲爱的开发人员,

我目前因应用内应用商店评级(SKStoreReviewController)出现问题而陷入困境。在这种情况下,我有一个带有按钮的屏幕“ FirstScreen”。当我点击它时,我将转到下一个屏幕“ SecondScreen”,并弹出一个针对AppStore评级的应用内警报。

我正在尝试为我的UITest找到解决方案,以关闭此警报。我尝试了许多解决方案,但我正在寻找一种不依赖于字符串的解决方案(我不想本地化此Alert的内容):

override func setUp() {
    app = XCUIApplication()
    app.launch()

    addUIInterruptionMonitor(withDescription: "System Dialog") { (alert) -> Bool in
        let allowButton = alert.buttons.element(boundBy: 1)
        if allowButton.exists {
            allowButton.tap()
        }
    }
}

我也想添加一个交互(“ app.swipeUp()”)来触发“ SecondScreen”来触发此处理程序。

我也尝试了另一种解决方案,因为我知道何时会触发此警报:

let dismissButton = XCUIApplication(bundleIdentifier: "com.apple.springboard").buttons.element(boundBy: 1)
if dismissButton.exists {
    dismissButton.tap()
}

[没人工作,我仍然被困住:(是否有人找到解决方案以消除此警报?

谢谢

swift alert coded-ui-tests dismiss skstorereviewcontroller
1个回答
0
投票

向上滑动不起作用,但具有讽刺意味的是,向向下]滑动>。这是一个非常简单的示例

import UIKit
import StoreKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) {
            SKStoreReviewController.requestReview()
        }
    }

}
import XCTest

class UITests: XCTestCase {

    override func setUp() {
        continueAfterFailure = false
    }

    func test() {
        let app = XCUIApplication()
        app.launch()

        sleep(5)
        app.swipeDown()
        sleep(3)
    }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.