我正在使用Xcode 7的新功能:UI测试.记录交互后,Xcode自动生成代码:
- (void)testDoubleTapToolBarItem {
[[[XCUIApplication alloc] init].tabBars.buttons[@"\U5173\U6ce8"] doubleTap];
~~~~~~~~~~~~~~~~
}
Run Code Online (Sandbox Code Playgroud)
但是,警告也显示出来了.有人知道怎么修这个东西吗?
不完整的通用字符名称
编辑:这似乎是自Xcode 7.0 GM以来的一个BUG
我的一个屏幕有多个文本字段,我可以从不同的其他屏幕登陆到这个屏幕.在每种情况下,我将一个或另一个文本字段作为第一响应者.我无法编写测试来确定所需的textField是否具有焦点.
当我在控制台中打印文本字段时 -
输出:{TextField 0x131171d40:traits:146031247360,Focused,{{ 6.0,108.3 },{402.0,35.0}},value:}
但我在XCUIElement上找不到任何focus/isFocus属性.
有没有办法实现这个目标?
我有一个现有的Objective-C项目,我想添加一个新的Xcode 7 UI测试目标,OHHTTPStubs作为依赖项.
我在Xcode中添加了新的(Swift 2.0)UI测试目标,然后将其添加到我的Podfile:
target 'FooUITests' do
pod 'OHHTTPStubs', '4.0.1'
end
Run Code Online (Sandbox Code Playgroud)
我跑pod update,清理,重建.但是当我尝试import OHHTTPStubs在模板UI测试的顶部测试.swift文件Xcode为我创建时,它抱怨"没有这样的模块'OHHTTPStubs'".
我正在使用Cocoapods版本0.37.2-将Objective-C依赖项导入到Swift(... UI测试)目标中,甚至可以工作吗?
更新:正如我在下面的自我回答中所述,添加use_frameworks!到我的Podfile让我得到了清晰的编译 - 我可以import OHHTTPStubs在我的测试文件的顶部,引用类和方法,代码完成工作 - 但是当我真正去运行测试时我得到Xcode控制台中的以下输出:
2015-06-18 10:06:57.134 XCTRunner[51557:609693] The bundle “FooUITests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.
2015-06-18 10:06:57.135 XCTRunner[51557:609693] (dlopen_preflight(/Users/foo/Library/Developer/CoreSimulator/Devices/38181A1B-67B1-4D7F-B434-85361533F985/data/Containers/Bundle/Application/83C68748-55A3-4A02-8862-C18ADEF895B5/FooUITests-Runner.app/PlugIns/FooUITests.xctest/FooUITests): Library not loaded: @rpath/OHHTTPStubs.framework/OHHTTPStubs
Referenced from: /Users/foo/Library/Developer/CoreSimulator/Devices/38181A1B-67B1-4D7F-B434-85361533F985/data/Containers/Bundle/Application/83C68748-55A3-4A02-8862-C18ADEF895B5/FooUITests-Runner.app/PlugIns/FooUITests.xctest/FooUITests
Reason: image not found)
Run Code Online (Sandbox Code Playgroud)
虽然我的目录下似乎有Release-iphoneos和Release-iphonesimulator构建.OHHTTPStubs.framework …
Xcode 7†有一种直接测试UI的新方法,包括新的测试目标"iOS UI Testing Bundle"(或"OS X").

在UI测试目标中,似乎没有对构成您的App的模型或类的内置访问.例如[UIApplication sharedApplication],您的UI测试无法调用.这意味着"应用程序测试"和"UI测试"存在于可能不可逾越的鸿沟中.
如前所述这里:
问题是Xcode的UI测试不允许访问实际的应用程序.
问题:
xcodeproj在github上工作.†在撰写本文时,测试版软件.
单击记录按钮时,Xcode会提示"No buildable for testable".
在针对iOS的Xcode项目中,有一个Objective-C测试目标和一个Swift测试目标,两者都用于UI测试.在Apple UITestingGuidelines的指导下,我将插入点移动到testExample函数并单击了记录按钮.释放按钮后,会立即显示一条弹出警告,其中显示"No buildable for testable".我已经尝试过多次重启项目但是没有用.
有没有办法自动化SFSafariViewController?我喜欢Xcode 7 UI测试功能,但它似乎不支持SFSafariViewController自动化.我正在测试的一些UI流程需要一个Web浏览器,因此应用程序使用SFSafariViewController使其比Web视图更安全.
有没有办法将应用程序发送到后台?与您可以调用的方式类似XCUIApplication.terminate(),我有一些要测试的UI元素applicationDidBecomeActive(_:).有谁知道这是否可能?
我正在使用集成在Xcode和XCTest中的UI Test Case类来测试应用程序UI.我想测试这样的东西:
app = XCUIApplication()
let textField = app.textFields["Apple"]
textField.typeText("text_user_typed_in")
XCTAssertEqual(textField.text, "text_user_typed_in")
Run Code Online (Sandbox Code Playgroud)
我已经尝试过textField.value了!字符串方法; 这是行不通的.我也尝试过使用新的异步方法和expectationForPredicate(),它会导致超时.
知道怎么做吗?或者UI测试无法验证这种类型,我只能编写黑盒测试?
我正在寻找一种方法来测试使用AVPlayer的应用程序.
如何加载视频文件?我试图记录操作,但在调用NSOpenPanel.runModal()时记录停止.
任何的想法?
我有一个场景,我必须旋转我的模拟器,而xcode ui测试正在进行.
要旋转模拟器,我使用以下代码
UIDevice.currentDevice().orientation
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有没有解决方案在xcode ui测试中使用swift代码旋转模拟器?
谢谢
xcode-ui-testing ×10
ios ×6
swift ×4
xcode ×4
ui-testing ×3
xcode7 ×3
cocoa ×2
xctest ×2
avplayer ×1
cocoapods ×1
ios9 ×1
objective-c ×1
record ×1
testing ×1