标签: xcode-ui-testing

如何使用Xcode 7 UI测试在表视图中检查单元格是否可见?

我有一个包含大量单元格的表视图,而不是每个单元格都在屏幕上可见.当我检查时

table.cells.staticTexts.matchingIdentifier("My Cell").element.exists
Run Code Online (Sandbox Code Playgroud)

它返回true但屏幕上看不到单元格,我无法点击它.因为每当我点击它时,测试都会失败.

如何检查元素在屏幕上是否可见?或者如何点击不可见的元素?

xcode uitableview ios xcode7 xcode-ui-testing

7
推荐指数
2
解决办法
2979
查看次数

你能从命令行运行一个特定的Xcuitest吗?

使用iOS 9.0,Xcode GM和新的Xcuitesting框架.如何从命令行运行特定测试,而不必单击ide中的play?我知道有一个快捷方式来运行所有测试,但我想运行一个测试.

谢谢!

testing xcode ios xcode-ui-testing

7
推荐指数
1
解决办法
3592
查看次数

如何在Xcode 7中自动化UI测试期间访问本地化字符串?

基于我之前讨论的本地化字符串线程,我还有一个问题.以下是链接: 如何在XCode7上对系统按钮进行自动UI测试?

现在,如果我将iOS系统语言切换到另一个,我无法获得本地化的字符串,因为它在不同的包中.我发现另一个线程正在谈论这个: 无法访问UI Test中的字符串本地化(Xcode 7)

如果我将所有本地化字符串从目标应用程序复制到UI测试,它的效果很好.但是对于XIB或故事板中的那些字符串,它们使用对象ID来表示消息,它没有意义且不可读. 如何使对象ID具有人类可读性?

所以我必须先转换它才能知道它在使用NSLocalizedString之前的原因:

NSLocalizedString("Help", bundle: NSBundle(forClass: AClassInYourUITests.self), comment: "")
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来解决Xcode中的这个问题?如果可能的话,我不想在我的代码中使用这些无意义的字符串,很难知道它是什么.或者我必须编写一个脚本来处理这个问题?

更确切地说,让我们举个例子.我在目标应用的故事板中的一些本地化字符串是:

"U2v-M1-HYu.text" = "???";
"eTC-Zg-zHl.headerTitle" = "??";
Run Code Online (Sandbox Code Playgroud)

如果我想为不同的语言进行UI测试,我不能只将它复制到UI测试包.我需要先将它转换成这样:

"Help" = "???";
"Done" = "??";
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议.

ios xcode7 xcode-ui-testing

7
推荐指数
1
解决办法
998
查看次数

Xcode 7 UI测试目标语言环境和区域设置

我正在尝试设置我的UI测试目标的语言和区域,不幸的是它似乎不起作用.

我试过两种方式,首先:

  • 产品| 方案| 编辑方案
  • 运行| 选项
    • 应用语言:法语
    • 应用地区:法国
  • 测试| 参数
    • 使用Run操作的参数和环境变量:已选中

我试着用另一种方式:

  • 产品| 方案| 编辑方案
  • 测试| 参数
    • 使用Run操作的参数和环境变量:未选中
    • 发布时通过的论据:
      • -AppleLanguages (French)
      • -AppleLocale fr_FR

导致UI测试的每种方式仍然以英语发生.而且,当我按下录音按钮时,它会以法语运行...

所以,如果我做错了什么,我很乐意知道!

提前致谢!

xcode localization ui-testing ios xcode-ui-testing

7
推荐指数
1
解决办法
2234
查看次数

使用登录系统进行Xcode UI测试

我有一个带登录系统的应用程序,所以一旦用户登录了应用程序,我将他们的会话存储在本地数据库中,这会阻止用户每次使用该应用程序时都登录.显然,如果用户尚未登录,则应用程序会显示LoginViewController,但如果应用程序检测到用户的当前会话,HomeViewController则会显示a.

我为我创建了一些测试HomeViewController,它们都运行良好.但是,我已经意识到它们工作正常,因为应用程序当前存储了会话.如果我进入应用程序并注销当前用户,当我运行UI测试时,它们将失败.这是有道理的,因为测试期望HomeViewController显示a,而是LoginViewController显示.

考虑到我还想为其创建UI测试LoginViewController,创建一个解决方案似乎是合理的,在每次测试中,如果用户登录,我都会设置.我怎么能这样做?

xcode ios xcode-ui-testing

7
推荐指数
1
解决办法
914
查看次数

从XCTestCase访问项目代码 - UI测试

我正在尝试在我的项目中设置UI测试.我正在进行UI测试,试图通过我的应用程序登录提示登录.为了确保在测试启动时显示登录提示,我正在尝试运行ServerManager.logout(),这是在项目的代码库中.这将导致在启动时显示登录提示.

import XCTest

class SmokeTest: XCTestCase {

    override func setUp() {
        super.setUp()

        // Put setup code here. This method is called before the invocation of each test method in the class.

        // In UI tests it is usually best to stop immediately when a failure occurs.
        continueAfterFailure = false
        // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
        XCUIApplication().launch()

        // In UI tests it’s …
Run Code Online (Sandbox Code Playgroud)

xcode ios xctest xcode-ui-testing

7
推荐指数
1
解决办法
2771
查看次数

使用addUIInterruptionMonitor()清除XCUITest中的SFAuthenticationSession警报

有没有人成功地用于addUIInterruptionMonitor清除所产生的警报start()荷兰国际集团的SFAuthenticationSession运行XCUITest时?

我不能让它在Xcode 9.1/iOS 11.1.1(模拟器或设备)上工作.该标准建议(建立处理,并随后与设备交互出现的警告之前)没有帮助.

测试记录器说app.alerts.firstMatch.buttons["Continue"]).tap()应该做的伎俩,但这也不起作用.来自另一个SO答案的这种技术有时会起作用,但对CI不一致.

所以我想知道"官方"解决方案是否适用于任何人.

ios xcode-ui-testing sfauthenticationsession xcuitest

7
推荐指数
1
解决办法
503
查看次数

尝试进行涉及webview的UI测试时,Xcode崩溃

致力于为swift iOS应用程序构建自动UI测试.该应用程序涉及用于登录Facebook的Web视图.每次在web视图的范围内点击并尝试登录facebook时,如果我尝试使用内置的Xcode UI记录构建UI测试,则会崩溃Xcode.无论Xcode会崩溃,我使用iPhone 6或模拟器都没关系.

我正在使用Xcode 9.以及FBSDKLoginKit和FBSDKCoreKit.

重现步骤:

1)拥有一个带有webview的应用程序

2)点击记录UI测试

3)单击webview范围内的任意位置

这种行为有原因吗?

我是否需要更改Xcode中的设置才能记录Web视图交互?

下面是Xcode崩溃时收到的错误消息.

Process:               Xcode [70544]
Path:                  /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier:            com.apple.dt.Xcode
Version:               9.3 (14154)
Build Info:            IDEFrameworks-14154000000000000~2
App Item ID:           497799835
App External ID:       826408812
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Xcode [70544]
User ID:               501

Date/Time:             2018-05-21 14:04:50.053 -0400
OS Version:            Mac OS X 10.13.4 (17E199)
Report Version:        12
Anonymous UUID:        335CE1E7-B5AB-F717-E6D0-019AF52B3708

Sleep/Wake UUID:       7824F1AB-C514-4609-A447-F15EA9C86C84

Time Awake Since Boot: 99000 seconds
Time Since Wake:       1800 seconds

System …
Run Code Online (Sandbox Code Playgroud)

xcode swift xcode-ui-testing fastlane fastlane-snapshot

7
推荐指数
1
解决办法
579
查看次数

无法覆盖Swift XCTestCase中的init()函数

由于某些原因,我想在UI测试中覆盖XCTestCase的init函数:

  • 要在setUp()之外启动应用程序,这样就无需为每个测试重新启动应用程序(这很繁琐,而且会降低测试速度)
  • 要初始化提供通过应用程序的常规导航的其他类,必须使用测试用例(self)进行初始化。

我现在看起来像这样:

import XCTest

class UITest: XCTestCase {

    let app = XCUIApplication()

    // Helper packages
    var helper: UITestHelper!

    override func setUp() {
        super.setUp()

        // Helper package instantiation
        helper = UITestHelper(withTestCase: self, forApp: app)

        continueAfterFailure = false
        app.launch()
    }

... tearDown(), tests ....
Run Code Online (Sandbox Code Playgroud)

当我打电话时:

override init() {
    super.init()
    foo()
}
Run Code Online (Sandbox Code Playgroud)

我懂了 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

xcode ios swift xcode-ui-testing

7
推荐指数
1
解决办法
512
查看次数

在ios UITest中间歇性"尝试启动失败"

我在Xcode7.3/iOS9.3上进行了UI测试,大约看了1/10

Test Case '-[WhatevUITests.RegistrationUITests testVerifyUnsupportedPhoneNumberAlert]' started.
    t =     0.00s     Start Test
    t =     0.00s     Set Up
    t =     0.01s         Launch me.jackpine.whatev-dev
    t =     0.11s             Terminate <XCUIApplicationProcess: 0x7ff91a712550 me.jackpine.whatev-dev (94280)>
    t =     1.14s             Assertion Failure: UI Testing Failure - Failure attempting to launch <XCUIApplicationImpl: 0x7ff91a49fae0 me.jackpine.whatev-dev at /Users/mkirk/src/jackpine/Whatev-iOS/build/Whatev/Build/Products/Debug-iphonesimulator/Whatev Dev.app>, nil token for current process reference <XCUIApplicationProcess: 0x7ff91a624440 me.jackpine.whatev-dev (94333)>
/Users/mkirk/src/jackpine/Whatev-iOS/WhatevUITests/RegistrationUITests.swift:16: error: -[WhatevUITests.RegistrationUITests testVerifyUnsupportedPhoneNumberAlert] : UI Testing Failure - Failure attempting to launch <XCUIApplicationImpl: 0x7ff91a49fae0 me.jackpine.whatev-dev at /Users/mkirk/src/jackpine/Whatev-iOS/build/Whatev/Build/Products/Debug-iphonesimulator/Whatev Dev.app>, nil token for …
Run Code Online (Sandbox Code Playgroud)

ios xcode-ui-testing

6
推荐指数
1
解决办法
949
查看次数