swift - 在 Swift 的 UITests 中关闭应用内 AppStore 评级
问题描述
你好亲爱的开发者,
由于应用内 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()
}
没有人工作,我仍然被困住:(有没有人找到解决方案来消除这个警报?
谢谢
解决方案
向上滑动不起作用,但具有讽刺意味的是向下滑动。这是一个非常简单的例子
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)
}
}
推荐阅读
- javascript - Discord 机器人如何在嵌入或一般情况下在 Discord 消息中创建超链接?
- latency - Scylla 如何处理写入工作负载的激进 memflush 和压缩?
- kubernetes - 单个 kubernetes 作业是否可以包含具有不同并行度定义的多个 pod?
- reactjs - 新更改后如何刷新 React UI?
- ag-grid - 使用标签无法点击 ag-grid 中的单元格
- python - 用于 callproc 的 Python cx_Oracle 输入/输出变量
- spring - 如何使用 Spring Boot 和 OAuth2.0 配置体验和生成新访问令牌以进行登录
- api - 直接查询数据库还是从 GraphQL 解析器中的 API 获取?
- javascript - 静态 Webstie - 渲染下拉 Json 数据
- neo4j - Neo4J 按关系匹配子节点