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