【问题标题】:how to get value of an XCUIElement?如何获取 XCUIElement 的值?
【发布时间】:2015-08-05 19:58:52
【问题描述】:

XCODE7 UITesting中如何获取textfield的值?

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

【问题讨论】:

    标签: xcode7 xcode-ui-testing


    【解决方案1】:

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

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

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

      我所做的是为我的导航栏创建了一个 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 是解开这个问题答案的关键....双关语:)

      【讨论】:

      • 我对此赞不绝口! lldb 中的“po...”是救命稻草!
      【解决方案3】:

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

      【讨论】:

      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2019-10-21
      • 1970-01-01
      相关资源
      最近更新 更多