gpt4 book ai didi

ios - Xcode UITest 中的页面控件

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:21:52 26 4
gpt4 key购买 nike

我有一个应用程序,其中页面控件用于指示多个屏幕。当用户点击页面控件时(例如:在当前所选页面的右侧), ScrollView 将滚动到以下屏幕。它工作正常。

我想为这个场景编写一个 UI 测试。我发现我无法点击特定的页面控件“点”来触发该操作。我可以检查的是页面控件是否存在以及当前选定的页面。

另一个问题是,即使我能够这样做,我如何检查 ScrollView 是否已经滚动?我只能访问 ScrollView 的框架,而不能访问它的边界。

我刚开始使用 Xcode UITest,它让我很失望。我认为它现在会很强大(它由 Xcode 7 引入,之前作为 UI Automation 可用),但现在看来还没有。

我将恢复到单元测试 + 手动功能测试。如果有人有其他想法,请分享。

最佳答案

不要这么快就放弃,Xcode UITest 有时会令人沮丧,但一旦您弄清楚要使用什么技巧,它们就会非常强大:

你像这样测试你的 UIPageControl:

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

let scrollView = app.scrollViews.element(boundBy: 0)
let pageIndicator = app.pageIndicators.element(boundBy: 0)

// test that page indicator is updated when user scrolls to page 2
scrollView.swipeLeft()
XCTAssertEqual(pageIndicator.value as? String, "page 2 of 3")

// test that scrollview scrolls to page 3 when user taps right of the current page in page indicator
pageIndicator.coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.2)).tap()
XCTAssert(app.otherElements["page_3"].waitForExistence(timeout: 2))
XCTAssertFalse(app.otherElements["page_2"].exists)
XCTAssertEqual(pageIndicator.value as? String, "page 3 of 3")
}

您可以使用 coordinate 告诉测试在何处点击 UIElement方法。您将 CGVector 对象传递给描述点击位置的方法。

例如 CGVector(dx: 0.9, dy: 0.2)告诉测试在元素宽度的 90% 和高度的 20% 处点击元素。

您可以使用它在 UIPageIndicator 中点击当前页面的左侧或右侧(见上面的代码示例)

要测试您是否在 UIScrollView 中的正确页面上,您可以设置每个页面 accessibilityIdentifier到一个唯一的字符串,然后在您点击页面控件后断言具有该标识符的 UIElement 存在。

在我的例子中,页面是 3 个 UIView。我设置了他们的 accessibilityIdentifier到“page_1”、“page_2”和“page_3”,然后断言“page_3”存在而“page_2”不存在。

关于ios - Xcode UITest 中的页面控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47239274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com