如何在XCTest和XCUITest

时间:2017-12-21 13:48:09

标签: ios ui-automation xctest xcuitest

我必须使用UITextFieldXCUITest检查是否有XCTest为空或包含任何值。我正在检查很多地方,发现textField.Value可以用来查找结果。但对我来说问题是textField.value将占位符作为值返回,因此它无法将空字段检测为空。

4 个答案:

答案 0 :(得分:1)

您有两种情况可以确定文本字段是空的。第一个 - 使用yourTextField.text == nil的标准bool值,然后第二次检查实例是否有"" - >字符串例如,当用户写一些文本然后将其删除时,就会发生这种情况......

所以在代码中:

// The second condition will occur only if the text is not nil, so 
// it is okay to unwrap it like it.
 XCTAssertTrue(textField.text == nil || textField.text!.isEmpty)

答案 1 :(得分:0)

有一种可行的解决方案(除了在一种情况下*)。 XCUIElement具有属性placeholderValue,该属性应包含文本字段的占位符文本。所以试试这个:

let textfield = XCUIApplication().textFields["textFieldIdentifier"]

if let textFieldText = textField.value as? String,
   textFieldText.isEmpty == false,
   textFieldText != textField.placeholderValue {
    // Do the thing that requires the text field *not* to be empty
}

*一种不起作用的情况是,如果在文本字段中输入的文本与占位符的文本相同。那我们就在菲尔斯维尔。

但是,由于这是一个UITest,我认为您应该对在此文本字段中输入的内容有所控制。

答案 2 :(得分:0)

我最近遇到了这个问题,正如@adamjansch 指出的那样,UITextField 如果设置了 XCUIElement 并且文本字段中没有文本,则 placeholder 将返回 let query = app.scrollViews.otherElements let textField = query.textFields["textFieldIdentifier"] if textField.value != nil, let aValue = textField.value as? String, let placeholderValue = textField.placeholderValue, aValue != placeholderValue { // Do something with the text field; it has a value // so perhaps it needs to be cleared before a new // value is input. textField.buttons["Clear text"].tap() } else { ... } 值。

鉴于此,我最终做了这样的事情:

sudo prompt on Ubuntu

答案 3 :(得分:-1)

您的问题有一个解决方法。如果您不想获得占位符

  • 首先点击文字字段

    readAndGet
  • 从textfield元素中获取值

    Human