标签: xcode-ui-testing

如何通过UI测试执行"向左滑动"操作

如何通过Xcode中的UI测试执行"向左滑动"操作以触发segue并更改视图控制器?

录制的代码是

[[[[[[[XCUIApplication alloc] init].otherElements containingType:XCUIElementTypeNavigationBar identifier:@"UIView"] childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element tap];
Run Code Online (Sandbox Code Playgroud)

但似乎它不起作用 - 据我所知,视图控制器不会更改为新的.

xcode objective-c ios xcode7 xcode-ui-testing

4
推荐指数
1
解决办法
2892
查看次数

Swift - 如何在点击按钮时测试标签是否已更新

我去了一个非常简单的计算器,我试图测试一个标签是否在点击按钮时更新.

我的测试方法如下所示:

let app = XCUIApplication()
app.buttons["9"].tap()
Run Code Online (Sandbox Code Playgroud)

我可以直观地看到标签正在更新,但我不确定如何测试它.

我想我需要使用XCUIElementQueryAPI来查询标签,然后断言标签文本已经改变.我只是不确定该怎么做.

我不确定以下问题:

  • 我是否需要知道标签能够查询的值是什么?
  • 是否有一种方法可以在不知道应用程序启动时的值是什么时查询标签?

ui-testing ios swift xcode7 xcode-ui-testing

4
推荐指数
2
解决办法
3565
查看次数

为什么 XCode 两次启动应用程序来运行 UI 测试?

我正在经历一个相当乏味的过程,让一堆 UI 测试再次工作,但要运行每个测试,看起来 XCode 在模拟器中启动了两次应用程序。一次是一无所获,然后是另一次真正运行测试的地方。

我的配置是否有问题导致这种情况发生,或者这种行为是否符合预期?

xcode ios xcode-ui-testing

4
推荐指数
1
解决办法
632
查看次数

如何在UITests Target中找到带有accessibilityIdentifier的UIView

我试图在测试目标中找到一个UIView带有navigationBar 的元素,accessibilityIdentifier以便检查isEnabled状态.

尝试了不同的解决方案,但找不到所需的解决方案.有没有办法实现想要的东西?

试过这个解决方案:application.groups.matching(identifier: "navigationBar")- 不起作用.

xcode ios xcode-ui-testing

4
推荐指数
1
解决办法
2451
查看次数

从 Xcode UITests 的 Menu Token 字段中选择文本

UITests - 带有下拉菜单的令牌字段

我看到一个 WWDC 视频UITests说,如果你双击 Xcode 中的蓝色标记字段,它会变成文本并删除菜单(也就是蓝色的东西),但是当我双击该字段时,它就会被删除。

xcode xcode-ui-testing

4
推荐指数
1
解决办法
634
查看次数

Xcode 9.3 staticText 元素查询限制 128 个字符用于 UI 测试

在 Xcode 9.3 中,当我尝试运行 UI 测试用例时,它开始给我以下异常,其中发现超过 128 个字符的冗长消息 -

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效查询 - 字符串标识符“超过 128 个字符的冗长消息......”超过了 128 个字符的最大长度。您可以通过使用自定义 NSPredicate 构建查询来解决此限制,该查询指定要匹配的属性(标签、标题、值、占位符值或标识符)。

给出的解决方法是使用自定义 NSPredicate 如下所示,

let predicate = NSPredicate(format: "label BEGINSWITH 'Empty '")
let label = app.staticTexts.element(matching: predicate)
XCTAssert(label.exists)
Run Code Online (Sandbox Code Playgroud)

但是如果我们像上面那样使用谓词,我们可能无法断言整个文本消息。还有其他可能的方法可以断言整个文本吗?请告诉我。

谢谢,干杯:)

xcode-ui-testing

4
推荐指数
1
解决办法
1877
查看次数

是否可以使用 XCTest 中的最后一个匹配元素进行操作?

我想点击我的应用程序中的最后一个[播放] 按钮,我正在寻找类似的东西

app.buttons["play"].lastMatch.tap()
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

xcode ios xctest swift xcode-ui-testing

4
推荐指数
1
解决办法
477
查看次数

如何访问 XCUITest 导航栏上的右侧项目按钮?

我正在为我的 iOS Swift 应用程序编写 UITest 案例。在应用程序中,我以这种方式在导航栏上创建了一个自定义的右键项目按钮:

let barButtonItem = UIBarButtonItem(customView: customView)
navigationItem.rightBarButtonItem = barButtonItem
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何在 XCUITest 中访问这个自定义的右键项目按钮,真的需要一些帮助。提前致谢。

ios xcode-ui-testing xcuitest

4
推荐指数
1
解决办法
3502
查看次数

iOS 13 Xcode UI 测试自动化类型不匹配

我的应用程序使用WKWebView在代码中设置的(这是因为iOS 10 中的这个错误):

final class HelpViewController: UIViewController {
  // …
    var webView: WKWebView! 

  override func viewDidLoad() {
    super.viewDidLoad()

        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(webView)
        let margins = view.layoutMarginsGuide
        webView.topAnchor.constraint(equalTo: self.back.bottomAnchor).isActive = true
        webView.rightAnchor.constraint(equalTo: margins.rightAnchor).isActive = true
        webView.leftAnchor.constraint(equalTo: margins.leftAnchor).isActive = true
        webView.bottomAnchor.constraint(equalTo: margins.bottomAnchor).isActive = true
        webView.navigationDelegate = self
  //…
}  
Run Code Online (Sandbox Code Playgroud)

我的 UI 测试如下所示:

func test_helpButtonShowsHelpText() {
  //…
    let webView = shopEasyApp.webViews.element
    let webViewExists = webView.waitForExistence(timeout: kDefaultUITestTimeout)
    XCTAssert(webViewExists, "Web view …
Run Code Online (Sandbox Code Playgroud)

xcode-ui-testing ios13 xcode11

4
推荐指数
1
解决办法
3321
查看次数

在 iOS 13 XCUITest 上滑动关闭视图

我一直在编写 UITests,在录制测试以打开模态视图并将模态向下滑动到屏幕底部以关闭它之后,我得到了一些这样的代码(因为那里有一个表视图):

    var tablesQuery = app.tables.element(boundBy: 0)
    tablesQuery.swipeDown()
Run Code Online (Sandbox Code Playgroud)

问题是,这并不总是有效。有时(尤其是在 iPad 上),在回放测试时,视图会向下移动一点并跳回原位(而不是关闭)。

Apple 一定有同样的问题,并提出了更好的解决方案来消除 iOS 13 XCUITests 上的模态视图 (.present)。

有没有办法可靠地消除核心测试框架支持的这些傻瓜,这样我就不必对手势或诸如此类的东西进行任何自定义摆弄?

谢谢你的帮助!

如果没有任何明显的解决方案,我想一个被黑的重型向下手势也可能回答这个问题......因为所有答案都是针对非常微小或轻微版本的滑动,而不是全屏关闭手势。但我想先了解您对受支持解决方案的上下文(例如,您是否知道不存在受支持的解决方案?)

谢谢你的帮助!- Apple 通过 XCTest 框架拒绝视图的方式支持/维护,或者有关此不存在的信息将回答此问题。

ios xctest swift xcode-ui-testing

4
推荐指数
2
解决办法
1470
查看次数