2017-01-07 10 views
2

Selenium Webdriverを使ってJavaで書かれたテストがあり、Angular 2で書かれたテキストフィールドは視覚的にクリアされますが、Seleniumは実際にDOMのフィールドをクリアしません。Java Selenium&Angular 2 | Webdriverは視覚的にテキストフィールドをクリアしますが、DOMでは使用できません

空のタイトルを作成できないという警告をテキストフィールドから取得する必要があります.Seleniumがフィールドをクリアしたとはいえ、DOMにはまだタイトルがあると表示されているため警告は表示されません:

ng-reflect-length="10" 
ng-reflect-model="New Survey" 

実際に明らかだった場合は、DOMに上記の角度コードを含めないでください。


私はもともとクリアするためのJavaセレンの正しい形式を使用してみました:

public void clearTextField(){ 
webElement.clear(); 
} 

そして、これは視覚的にテキストフィールドをクリアしますが、それらの角度2つの属性と値は、彼らのようにDOMに消えませんすべきだ。これにより、テキストフィールドの文字カウンタが100文字になるはずの文字数ではなく、90文字のままになります。それが100文字の場合、私は警告を得るでしょう。テキストフィールドをクリアするとき

public void sendKeysToTextField(String inputText){   
webElement.sendKeys(inputText); 
} 

しかし、それでもまだ、DOMは更新されません:私は場合


上記角度2つの属性と値は、のSendKeys変更が反映されます。


私は、RobotUtilityにバックスペースを強制し、ページを見つけるための座標が必要です。しかし、これはローカルでしか動作しません。

助けてください!ありがとうございました。

+0

'clear'メソッドに関するいくつかの情報は、http://stackoverflow.com/a/15172140/2575259 –

+0

こんにちは@Naveenあなたのコメントをいただきありがとうございます。しかし、この問題は、SeleniumがDOMでAngular 2を処理する方法に固有のようです。 .clear()は他の言語でも完璧に動作します。 –

答えて

0

フィールドをすべて消去するためにControl-Aを送信してから、フィールドを消去しようとしましたか?

object.sendkeys( "^ a {BACKSPACE}");

+0

こんにちはMKありがとうございます。私はそれと同様のRobotUtilityを試しました。基本的にstring.length、ループ、および必要なキーコードの "types" char。別のJavaスレッドを実行してSeleniumをブラウザから起動させる必要があるので、特定の座標を強制的に再クリックするように強制する必要があります(ローカルのみを実行する)。バックスペースを認識するためには、まずフィールドにcharを入力する必要があります。 メソッド: 'RobotUtilities.type(" char "); object.sendKeys( ""); object.click(); RobotUtlities.moveMouse(x、y); RobotUtlities.moveLeftClick(); RobotUtlities.type( "char"); RobotUtlities(ループバックスペース); ' –

関連する問題