我有一个类型.Image和类的变量XCUIElement.像这样的东西:
var image = app.descendantsMatchingType(.Image).elementAtIndex(0)
有没有办法可以提取实际图像,以便将其与其他图像进行比较?
我试过caling value方法,但它返回一个字符串.将它投射到UIImage总是失败.
有时在运行我的UI测试时,我收到以下错误Lost connection to test manager services.没有日志或任何东西.随机发生.我会提供更多信息,但由于错误的性质我只是没有它.
使用Xcode 7 beta 5.
我有一个如下测试:
let navnTextField = app.textFields["First Name"]
let name = "Henrik"
navnTextField.tap()
navnTextField.typeText("Henrik")
XCTAssertEqual(navnTextField.value as? String, name)
Run Code Online (Sandbox Code Playgroud)
问题是,默认情况下iPhone Simulator,由于系统设置,我有波兰语键盘,"Henrik"会自动更改为"ha".
简单的解决方案是从中删除波兰语键盘iOS Settings.然而,该解决方案没有解决问题,因为iPhone Simulator可以重置然后测试将再次失败.
有没有办法在测试用例之前设置自动更正或以其他方式将文本输入到文本字段.
我有测试登录功能的UI测试(并用它来测试其他东西),但有时当焦点从一个字段更改为另一个字段时 - 键盘隐藏,虽然光标在字段中闪烁,但我收到错误field.typeText- no focused fields to fill.
不知怎的,我意识到,点击一个Hardware -> Keyboard -> toggle software keyboard让键盘在屏幕上保持不变,所以测试效果很好.但是我需要让它在任何开发人员机器上的任何测试设备上工作,所以我想以编程方式设置这个选项,而不要讨厌"如果测试失败,请在项目的自述文件中设置...并手动设置...".
可能吗?
这是我的简单测试用例:
import XCTest
@testable import MyApp //it doesn't work
Run Code Online (Sandbox Code Playgroud)
因为这:
class TabBarControllerTests: XCTestCase {
override func setUp() {
super.setUp()
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([], forKey: DBTabBarOrderedIndexesKey) //key is undefined, because of lack of my app module
defaults.synchronize()
continueAfterFailure = false
XCUIApplication().launch()
}
func testIsOrderOfTabsSaved() {
XCUIApplication().tabBars.buttons["Catering"].tap()
//what next?
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我点击UITabBarItem我改变了值DBAppSettings.mode,所以在这里我想访问我的DBAppSettings.mode属性来检查它是否真的改变了.
我注意到有一个奇怪的事情,当我构建我的应用程序,并检查构建的内容时,我的UITest目标没有构建.那很重要么?
背景:
我正在尝试使用XCode GM在iOS 9.0中进行ui级别测试.
题:
在XCode GM中是否有一个命令可以让你看到可访问元素及其关系的"树"?类似于Appium中的'page'命令?
理想情况下,我可以在调试器中运行一个命令,它会给我一个可供选择/操作的元素列表.目前,您可以在单个XCUIElement上使用debugDescription,但只提供该元素的信息.
所以我有一种情况,我有一些经验证的textFields.我正在尝试运行UI测试,当他们失败时,他们会收到警告,弹出一条错误消息(可能是一个不同的消息,取决于哪些字段无效以及以何种方式).
我想测试一下,不仅会出现警报,而且会显示正确的消息.我遇到的问题是我需要获取本地化的文本进行比较(如果我用英语以外的其他语言运行测试),但是当我在UITest中调用NSLocalizedString时它无法收集正确的本地化字符串(只是返回关键[默认])
我已经尝试将localizeable.strings文件添加到UITest目标,但无济于事.有谁知道这是否可能?
编辑作为旁注:我也试过设置一个辅助功能标识符UIAlertView但是当我用该辅助功能标识符查询它不存在时,我只能使用看起来倒退的警报标题来查询它.
当我在Xcode 7.1.1中使用UI测试运行单个测试并且测试完成时,调试控制台日志记录输出消失.
我正在使用模拟器和我的setUp()包含运行测试XCUIApplication().launch().
测试运行时,控制台会填满测试输出.
它会在测试完成后模拟器关闭时消失.
有没有办法防止控制台文本消失并在测试完成后保持可见?
我正在为我的应用程序编写测试,需要找到"查看2个更多优惠"按钮,我的页面上有多个这些按钮,但我只想点击一个.当我尝试这个时,会出现一个错误:"发现多个匹配"所以问题是,我可以通过什么方式解决这个问题,这样我的测试就会搜索并点击一个名为"查看2个更多优惠"的按钮.
这是我目前的代码
let accordianButton = self.app.buttons["View 2 more offers"]
if accordianButton.exists {
accordianButton.tap()
}
sleep(1)
}
Run Code Online (Sandbox Code Playgroud) xcode-ui-testing ×10
ios ×8
swift ×5
xcode ×5
xctest ×2
appium ×1
import ×1
ios9 ×1
objective-c ×1
testing ×1
uitextfield ×1
xcode7 ×1