【问题标题】:Dismiss In-App AppStore rating in UITests in Swift在 Swift 的 UI 测试中关闭应用内应用商店评级
【发布时间】:2020-07-21 23:14:21
【问题描述】:

亲爱的开发者你好,

由于应用内 AppStore 评级 (SKStoreReviewController) 的问题,我目前陷入困境。 这是情况,我有一个带有按钮的屏幕“FirstScreen”。当我点击它时,我将转到下一个屏幕“SecondScreen”,然后会弹出 AppStore 评级的应用内提醒。

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

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()
        }
    }
}

当我来到 “SecondScreen” 时,我还尝试添加交互(“app.swipeUp()”)以触发此处理程序。

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

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

没有人工作,我仍然卡住:( 有没有人找到解决此警报的解决方案?

谢谢

【问题讨论】:

  • 你找到解决这个问题的方法了吗?

标签: swift alert coded-ui-tests dismiss skstorereviewcontroller


【解决方案1】:

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

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)
    }
}

【讨论】:

  • 你能解释一下吗?即使我尝试了问题中的方法,它也不适合我。
猜你喜欢
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2012-12-18
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多