标签: xcode-ui-testing

如何使用XCUIKeyboardKey常量?

在XCUIElementQuery类的下方,XCTest有许多常量,其上面的文档说明指出:

    Constants for use with -[XCUIElement typeKey:modifierFlags:],
    representing keys that have no textual representation. These comprise
    the set of control, function, and modifier keys found on most keyboards.
Run Code Online (Sandbox Code Playgroud)

显然,正如笔记所述,似乎应该有一种XCUIElement方法typeKey:modifierFlags:.但是,我似乎无法在文档中的任何位置找到此方法.利用前面提到的常量,我也没有看到任何替代这种行为的方法.以下是我有兴趣使用的常量的部分列表:

let XCUIKeyboardKeyDelete: String
let XCUIKeyboardKeyReturn: String
let XCUIKeyboardKeyTab: String
let XCUIKeyboardKeyCommand: String
Run Code Online (Sandbox Code Playgroud)

作为未来Xcode 7版本的一部分,这段代码是否为时尚早,可能会在稍后完成?

最后,我希望能够键入cmd+a然后使用XCUIKeyboardKeyDelete删除给定的内容XCUIElement.如果Xcode 7 UI Testing目前有很好的替代方案,我很乐意学习.

- > Swift 2.0 beta 4

ios swift2 xcode-ui-testing

5
推荐指数
1
解决办法
1492
查看次数

如何在Xcode7中的UITests下找到带谓词的按钮?

我需要访问以下按钮:

在此输入图像描述

这条线很好用:

app.buttons["Reorder 1, $27 000, LondonStreet, ok, Pending"]
Run Code Online (Sandbox Code Playgroud)

但这不是:

app.buttons.elementMatchingPredicate(NSPredicate(format: "accessibilityTitle BEGINSWITH[cd] %@", "Reorder 1"))
Run Code Online (Sandbox Code Playgroud)

swift ios9 xcode-ui-testing xcode7.1beta

5
推荐指数
1
解决办法
3538
查看次数

如何在Xcode UI测试脚本中执行点击和拖动操作?

例如,我有一个草图垫应用程序,我想通过绘制它来测试.我想指定一个(x,y)坐标,然后点击并拖动到另一个(x,y)坐标.

这在Xcode UI测试中是否可行?

Joe为这个问题提供了一个解决方案:使用目标C,我的代码看起来像这样:

XCUICoordinate *start = [element2 coordinateWithNormalizedOffset:CGVectorMake(0, 0)];
XCUICoordinate *finish = [element2 coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.5)];
[start pressForDuration:0 thenDragToCoordinate:finish];
Run Code Online (Sandbox Code Playgroud)

这里element2是XCUIElement我不得不执行的阻力.

testing xcode7 xcode-ui-testing

5
推荐指数
2
解决办法
5305
查看次数

是否可以使用SpriteKit在应用程序上使用Xcode UI Testing?

我想使用的UI测试SKSpriteKit.

由于我的第一次尝试不起作用,我想知道是否可以使用SpriteKit进行Xcode UI测试.

accessibility uiaccessibility sprite-kit swift xcode-ui-testing

5
推荐指数
1
解决办法
982
查看次数

调用`XCUIApplication().terminate()`后,可以防止XCode调用调试器

我正在使用UITest测试一个客观的C app,使用swift进行测试.

XCode 7.3,sim 9.3

每个测试用例都调用XCUIApplication.launch(),它通过发送SIGKILL来杀死任何正在运行的应用程序.

Xcode将此视为崩溃 - 调用调试器main.m.要继续测试套件,我只需单击调试器中的继续按钮即可.

点击继续后,我的日志说:

Message from debugger: Terminated due to signal 9
Run Code Online (Sandbox Code Playgroud)

这种情况令人沮丧,因为它发生在1/4的测试用例之后.导致我失去对正在编辑的文档的关注,导致我的测试套件挂起,直到我继续.

有没有解决的办法?

ios xcode-ui-testing

5
推荐指数
1
解决办法
1281
查看次数

如何在Xcode中编写覆盖Facebook登录的UI测试?

我想在Xcode中编写一个用于登录的UI测试FBDSKLoginKit.

然而,Facebook iOS SDK使用SFSafariViewController呈现给用户以便对她进行身份验证,遗憾的是,在Xcode 7中无法与SFSafariViewControllerUI测试进行交互.

任何想法如何测试Facebook登录而不与之交互SFSafariViewController?

xcode facebook ios xctest xcode-ui-testing

5
推荐指数
1
解决办法
2363
查看次数

执行UI测试期间在模拟器中更新位置

我想在UI测试的中间更新模拟器的位置,以便可以在位置更改时检查行为。UI测试是否可以通过某种方式“调出”运行AppleScript,该AppleScript可以通过模拟器的“调试/位置”菜单项或其他方法来更改模拟器的位置?

如果无法做到这一点,我正在考虑将自己的CLLocationManager版本注入应用程序,然后从UI测试(例如,通过本地Web服务器)将位置发送到该版本,假设我可以通过某种方式获取UI测试的位置信息“不在”位置(例如,通过写入Mac上的文件)。

simulator cllocationmanager ios swift xcode-ui-testing

5
推荐指数
1
解决办法
1189
查看次数

如何在Xcode中的UITests下等待直到某些视图可以点击?

有时在Xcode中的UITests下,编译器会在加载和显示之前尝试点击按钮.然后就出现问题了no matched found for....

但对此的简单解决方案是:

sleep(1) //wait 1 second and give `mybutton` time to load and be accessible for uitests
mybutton.tap()
Run Code Online (Sandbox Code Playgroud)

但这太可怕了,因为我不能把它0.1作为参数.在很多按钮之前等待1秒让我很烦人.

有没有办法等到uitests可见?

ios swift xcode-ui-testing

5
推荐指数
1
解决办法
1069
查看次数

在执行UITests时,其中一个辅助线程会停止吗?

我想知道在UITesting时导致二级线程停止的原因.那次崩溃并没有停止申请.

在此输入图像描述

毕竟,测试结束时出错:

UI测试失败 - 无法在15.0秒内获取快照

你知道导致这个问题的原因吗?

multithreading ios xcode-ui-testing

5
推荐指数
0
解决办法
207
查看次数

最后在XCUI TestCase期间停止在UITableView上滚动

在我的一个UITableView有超过10行.我想在UITestCase跑步时滚到最后一排.

我写下面的代码滚动到最后一行.

-(void)scrollToElement:(XCUIElement *)element application:(XCUIApplication *)app{
    while ([self visible:element withApplication:app]) {
        XCUIElement *searchResultTableView = app.tables[@"searchResultView"];
        XCUICoordinate *startCoord = [searchResultTableView coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.5)];
        XCUICoordinate *endCoord = [startCoord coordinateWithOffset:CGVectorMake(0.0, -262)];
        [startCoord pressForDuration:0.01 thenDragToCoordinate:endCoord];
    }
}
-(BOOL)visible:(XCUIElement *)element withApplication:(XCUIApplication *)app{
    if (element.exists && !CGRectIsEmpty(element.frame) && element.isHittable) {
        return CGRectContainsRect([app.windows elementBoundByIndex:0].frame, element.frame);
    } else {
        return FALSE;
    }
}
Run Code Online (Sandbox Code Playgroud)

我UITestCase通过下面的代码在我的方法之一中调用了上面的方法

XCUIElement *searchResultTableView = app.tables[@"searchResultView"];
[self waitForElementToAppear:searchResultTableView withTimeout:30];


XCUIElement *table = [app.tables elementBoundByIndex:0];
XCUIElement *lastCell = [table.cells elementBoundByIndex:table.cells.count - 1]; …
Run Code Online (Sandbox Code Playgroud)

ios xcode-ui-testing xcuitest

5
推荐指数
1
解决办法
702
查看次数