「サブリミナル」の「SLTextField」を使ってテストを書いていますが、最近、本当に厄介な問題に遭遇しました。
テキスト フィールドを更新し、クリアし、再度更新するテストを作成しました。
何らかの理由で、「SLTextField」を使用して要素のテキストを変更すると、「SLTextFields」はタップ可能な要素ではないというエラーが一貫して表示されます。これは本当ですか?もしそうなら、「SLTextField」クラスを持つことのポイントは何ですか?
同じテスト コードを書き直して要素を「SLElement」として見つけ、その時点で要素をタップし、キーボード オブジェクトを開いて必要なテキストを入力できますが、サブリミナルの機能全体を回避しているように見えます。これを行うことで。
「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];