在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
我需要访问以下按钮:
这条线很好用:
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) 例如,我有一个草图垫应用程序,我想通过绘制它来测试.我想指定一个(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我不得不执行的阻力.
我想使用的UI测试SKSpriteKit.
由于我的第一次尝试不起作用,我想知道是否可以使用SpriteKit进行Xcode UI测试.
accessibility uiaccessibility sprite-kit swift xcode-ui-testing
我正在使用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的测试用例之后.导致我失去对正在编辑的文档的关注,导致我的测试套件挂起,直到我继续.
有没有解决的办法?
我想在Xcode中编写一个用于登录的UI测试FBDSKLoginKit.
然而,Facebook iOS SDK使用SFSafariViewController呈现给用户以便对她进行身份验证,遗憾的是,在Xcode 7中无法与SFSafariViewControllerUI测试进行交互.
任何想法如何测试Facebook登录而不与之交互SFSafariViewController?
我想在UI测试的中间更新模拟器的位置,以便可以在位置更改时检查行为。UI测试是否可以通过某种方式“调出”运行AppleScript,该AppleScript可以通过模拟器的“调试/位置”菜单项或其他方法来更改模拟器的位置?
如果无法做到这一点,我正在考虑将自己的CLLocationManager版本注入应用程序,然后从UI测试(例如,通过本地Web服务器)将位置发送到该版本,假设我可以通过某种方式获取UI测试的位置信息“不在”位置(例如,通过写入Mac上的文件)。
有时在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可见?
在我的一个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) xcode-ui-testing ×10
ios ×7
swift ×4
facebook ×1
ios9 ×1
simulator ×1
sprite-kit ×1
swift2 ×1
testing ×1
xcode ×1
xcode7 ×1
xcode7.1beta ×1
xctest ×1
xcuitest ×1