我必须使用or检查是否有任何UITextField
为空或包含任何值。我检查了很多地方,发现可以用来找出结果。但对我来说,问题是将占位符作为值返回,因此它无法将空字段检测为空。XCUITest
XCTest
textField.Value
textField.value
问问题
3148 次
4 回答
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
}
* 这不起作用的一种情况是,如果在文本字段中输入的文本与占位符的文本相同。然后我们在Failsville。
但是,由于这是一个 UITest,我认为您应该对输入此文本字段的内容有所控制。
于 2020-04-28T16:10:18.817 回答
0
您有两种情况可以确定文本字段是否为空。第一个 - 使用标准 bool 值yourTextField.text == nil
和第二个检查实例是否有字符串""
-> 这应该例如在用户编写一些文本然后删除它时发生......
所以在代码中:
// 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)
于 2017-12-21T13:58:28.090 回答
0
UITextField
我最近遇到了这个问题,正如@adamjansch所指出的,如果它被设置并且文本字段中没有文本,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
{
...
}
于 2021-02-19T20:28:18.697 回答
-1
您的问题有一个解决方法。如果您不想获取占位符
首先点击文本框
textField.tap()
从 textfield 元素中获取值
let pageTitle = textField.value as? String var titleLength = pageTitle?.characters.count XCTAssertTrue(titleLength==0, "Title is empty")
于 2017-12-22T08:38:41.053 回答