如何获得XCUIElement的价值?

时间:2015-08-05 19:58:52

标签: xcode7 xcode-ui-testing

如何在XCODE7 UITesting中获取textfield的值?

var b = XCUIApplication().childrenMatchingType(.textField).elementBoundByIndex(0).stringValue

3 个答案:

答案 0 :(得分:11)

假设你有一个像这样的文本字段:

textField

(为了这个例子,我在那里硬编码了它的价值("我的文字")。

给它Accessibility Label。在这种情况下,我给它"文本字段"标签

现在要访问它的值,您可以执行以下操作:

func testExample() {

    let app = XCUIApplication()        
    let textField = app.textFields["Text Field"]
    XCTAssertTrue(textField.value as! String == "My Text")

    // So basically "textField.value"
}

旁注:如果对如何访问给定XCUIElement的某些属性存在疑问,我发现其debugDescription有很大帮助。

例如,在属性声明后设置断点,执行测试,等待应用程序在断点处停止,转到lldb console,键入po propertyName.debugDescription,然后检查输出:

output

我希望有所帮助。

答案 1 :(得分:2)

让我们假设我想获取为我的应用程序的导航栏打印的字符串

enter image description here

我做的是为导航栏创建了一个XCUIElement:

XCUIApplication *app = [[XCUIApplication alloc] init];
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0];

然后我在创建navBarTitle对象后设置断点,并使用调试控制台打印出navBarTitle对象的详细信息:

print out

您在调试控制台的打印输出中看到有一个名为 标识符

要从该对象中提取该字符串,我使用以下方法创建了一个NSString对象:

NSString *nameofuser = [navBarTitle valueForKey:@"identifier"];

我使用了XCUIElement navBarTitle,然后使用了 valueForKey 方法。 valueForKey提取密钥标识符的字符串值。

您可以在此处阅读此方法: NSKeyValueCoding

valueForKey是解锁这个问题的答案的关键....双关语意图:)

答案 2 :(得分:0)

app.staticTexts.element(boundBy:1).label