我一直在用“Subliminal's”“SLTextField”写一个测试,最近遇到了一些非常烦人的问题。
我写了一个测试,它应该更新一个文本字段,清除它,然后再次更新它。
出于某种原因,当我使用“SLTextField”更改元素文本时,我一直收到错误消息,指出“SLTextFields”不是可点击的元素。这是真的?如果是这样,那么拥有一个“SLTextField”类有什么意义呢?
我可以重写相同的测试代码以将元素查找为“SLElement”,此时我可以点击元素,打开键盘对象并输入必要的文本,但似乎我绕过了 Subliminal 的整个功能在这样做。
“SLTextField”有什么问题?
代码:
SLTextField *textField = [SLTextField elementWithAccessibilityLabel:fieldName];
SLWaitUntilTrue([textField isTappable], DEFAULT_TIMEOUT);
textField.text = newValue;
上面的代码抛出一个错误,指出“textField”永远不会变成可点击的。或者,下面的代码可以完美运行,尽管它不必要地冗长并且似乎使“SLTextField”变得多余。
代码:
SLElement *field = [SLElement elementWithAccessibilityLabel:fieldName];
[field tapAtActivationPoint];
//fill with text
SLKeyboard *kb = [SLKeyboard keyboard];
SLKeyboardKey *deleteKey = [SLKeyboardKey elementWithAccessibilityLabel:@"Delete"];
while(![field.value isEqualToString:@""]){
[deleteKey touchAndHoldWithDuration:1.2];
}
[kb typeString:newValue];
SLKeyboardKey *doneKey = [SLKeyboardKey elementWithAccessibilityLabel:@"Next"];
if(![doneKey isValid]){
doneKey = [SLKeyboardKey elementWithAccessibilityLabel:@"Done"];
}
[doneKey tap];
[kb hide];