10

如何获取textfieldXCODE7 UITesting 中的值?

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

3 回答 3

16

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

文本域

(为了这个例子,我正在硬编码它的价值(“我的文本”)。)

给它一个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,查看输出:

输出

我希望这会有所帮助。

于 2015-08-28T02:27:03.247 回答
3

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

在此处输入图像描述

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

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

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

打印出

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

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

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

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

您可以在此处阅读有关此方法的信息: NSKeyValueCoding

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

于 2016-11-18T00:48:07.890 回答
0

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

于 2020-05-05T23:55:42.300 回答