私はajaxベースのテキストフィールドに部分的な値を入力し、リストに期待される内容があることを確認するテストケースを持っています。表示されている場合は、コンテンツを選択します。どのようにこの作品を作るためのアイデア?セレンはオートコンプリートを処理できますか?
答えて
タイプコマンドでは、オートコンプリートをトリガするには不十分な場合があります。 Dave Webbの提案は他にもあります。私の唯一の追加は、typeKeysコマンドが必要な場合があり、若干異なるJavaScriptイベントが発生し、オートコンプリートウィジェットをトリガーする可能性があります。
タイプとタイプキーについての良い点。 –
typeとtypeKeysの両方をこの順序で使用します。 – chim
あなたの質問は多少曖昧です。
ほとんどのブラウザでは、フィールドの名前に基づいて値キャッシュが保持されます。これは、以前にサイトを訪れたことがない場合でも、ブラウザによって自動補完として提案されている値です。この機能はすべてのブラウザで標準ではありません。セレンがこれを検出/分析する標準的な方法はありません。あなたはまだそれを行うことができますが、自分で値を決定するjavascript関数を作成する必要があります。次に、セレンで "eval"を使ってこれらの関数を実行することができます。私はこれらの値をブラウザ間で互換性のある方法で伝えることができるjsライブラリは見ていません。
また、ajaxを使用して部分的に入力された値のサーバー側送信を行うこともできます。この場合、テキストボックスに値を入力し、期待値が上がることを主張するだけです。通常、オートコンプリート提案は、クライアント側のいくつかのレイヤーに表示されます。
なぜ私の質問があいまいなのか分かりますが、私が運転していたのはあなたの答えの2番目の部分です。私の場合、ajaxベースのテキストフィールドがあり、部分的に入力された値に基づいてオプションをユーザーに提供します。セレンを使用してこれらのオプションを取得し、期待値がその中にあることを確認できますか? – Afamee
次のように私はこれを行うだろう:
type
をテキストフィールドに値を入力します。自動補完リストでwaitForTextPresent
またはverifyTextPresent
アイテムをクリックしてオートコンプリートのコンテンツclick
またはmouseDown
をチェックする
トリックは最終click
がちょうどいい場所にあること作ることになるだろう。あなたはそれを見つけることを期待しているテキストを検索するXPath式を使用できるはずです。
タイプの代わりにタイプキーを使用してください。 clickの代わりにmouseDownも使用してください。 正常に動作します。
が、私は最近、この非常にトピックに関するHOWTOを書いた - using Selenium to test an AJAX-driven JQuery autocomplete menu:
あなたは英雄です、私はあなたのブログの投稿に続き、それは完璧に動作します、多くのありがとう – sameera207
パトリックの答えは確かに重要ですが、私はまた、その焦点を発見し、mouseDownイベントは、jQueryのUIの最後のバージョンで必要とされます。あなたはそれが醤油研究所で稼働して見ることができるように、私はテストの映像を記録し : https://saucelabs.com/jobs/ad8c561be39bb7a42c9bb3a063214c95
私はIDEのシーケンス次使用、
- typeKeys
- waitForTextPresent
- のmouseOver
- clickAt
とよく反応しました
webdriverをについては、以下のコードが自動から自動的にテキストを検索するためである。この
を示唆してみてください。主にのリスト項目です。
driver.findElement(By.id("your searchBox")).sendKeys("your partial keyword");
Thread.sleep(3000);
List <WebElement> listItems = driver.findElements(By.xpath("your list item locator"));
listItems.get(0).click();
driver.findElement(By.id("your searchButton")).click();
ありがとうございました! :-) –
ありがとうございました! Thread.sleepは私が逃したものです –
'locator'はどこから見つかりますか? – Siddharth
typeKeysにはいくつかの問題がありました。 sendKeysは最終的な解決策に見えますが、まだ実験的です。リファレンスから:
このコマンドは実験的です。将来、typeKeysコマンドを置き換える可能性があります。
keyDown、keyUp、およびkeyPressイベントを発生させようとするtypeKeysコマンドとは異なり、このコマンドはSelenium 2のアトムによってサポートされています。今後も維持される予定です。 typeKeysのヘルプテキストで
はそれが言うコマンド:いくつかのケースでは
、あなたはフィールドの値を設定して、「typeKeysするために単純な「タイプ」コマンドを使用する必要があるかもしれません"コマンドを使用して、入力したものに対応するキーストロークイベントを送信します。
だから、これはうまく動作しているようです
type(selector, text);
typeKeys(selector, text);
の組み合わせを使用しています。
これは誰にとってもうまくいかないかもしれませんが、私は遅延を伴う文字入力が可能なメソッドを追加しました。
Actions builder = new Actions(this.webDriver);
WebElement element = this.getWebElement();
for (char c : value.toCharArray()) {
builder = builder.sendKeys(element, c + "");
builder.pause(100);
}
builder.build().perform();
私は、コンテナがresultsElementは、結果セットと値ラベルは、私がクリックする値で含まれていWebElementである私がクリックしたい項目(
resultsElement.findElement(By.xpath("//li[.='" + valueLabel + "']"))
を見つけました。
繰り返しますが、それはすべてのために動作しない場合がありますが、それは私のために働いたと私は共有することが賢明と思った。
いつかTypeKeysは動作しません。この時点で、あなたはkeyDを使用することができます自分の
入力ボックスをクリックし、ボックスにvalueとkeyDownと入力します。
私はこれを以下の関数を使って解くことができました: 以下の関数は、選択したいテキストをパラメータとして取ります。 例:「javascript」を選択する場合は、テキストボックスに「java」と入力してください。&は、この特定の場合は「javascript」です。
public void selectOptionWithText(String textToSelect) {
try {
//Add the below sleep if necessary
// Thread.sleep(1000);
WebElement autoOptions = driver.findElement(By.className("autocomplete"));
List<WebElement> optionsToSelect = autoOptions().findElements(By.tagName("div"));
for (WebElement option : optionsToSelect) {
if (option.getText().equals(textToSelect)) {
System.out.println("Trying to select: " + textToSelect);
option.click();
break;
}
}
}
catch(Exception e){
System.out.println("Error");
}
}
プラシャンスの答えを使用してほとんど変化:
/**
* Selects the element at position idx from the autocomplete combo, considering the partialKeyword
* @param driver
* @param element
* @param partialKeyword
* @param idx
* @throws InterruptedException
*/
public static void selectAutoCompleteValue(WebDriver driver, WebElement element, String partialKeyword, Integer idx) throws InterruptedException{
element.sendKeys(partialKeyword);
Thread.sleep(1000);
List <WebElement> listItems = driver.findElements(By.cssSelector(".ui-autocomplete-item.ui-autocomplete-list-item"));
listItems.get(idx).click();
}
は、この情報がお役に立てば幸い!
私は オートコンプリートテキストフィールドにSelenium IDE 2.9.1バージョンでこれらのコマンドを使用しました。 のSendKeys(ロケータ、値) clickAt(ロケータ、coordString) クリック(ロケータ)
コードでいくつかの答えがここにあります。だから私は私の貢献をします。
私はPrimeFaces 2.2からオートコンプリートコンポーネント内のアイテムを選択するために使用しているコード:
driver.findElement(By.id(codigoBanco_input)).sendKeys("text");
waitForElementLocated(By.cssSelector(listItensSelector), 5);
List<WebElement> listItems = driver.findElements(By.cssSelector(listItensSelector));
Actions builder = new Actions(driver);
builder.moveToElement(listItems.get(0)).build().perform();
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(itemSelector)));
driver.findElement(By.cssSelector(itemSelector)).click();
- 1. セレン処理ポップアップ&Googleオートコンプリート
- 2. セレンでjavascriptアラートを処理する
- 3. セレン+ IE9のポップアップを処理できません
- 4. セレンのshowModalDialogウィンドウの処理
- 5. テキストボックスでのオートコンプリートの処理。 Enterキーとは異なります
- 6. セレンのセールスフォースホバーを処理する方法
- 7. セレンは警告を処理するとき例外を返します
- 8. Pythonでセレンを使ってダイアログボックスを処理する方法は?
- 9. セレンで複数のアラートポップアップ確認を処理する方法は?
- 10. セレンを使用したポップアップウィンドウの処理
- 11. セレン処理Webアプリケーションのワンタイムページをクリック
- 12. JQueryUIオートコンプリートはどのように非同期結果を処理しますか?
- 13. セレン不明なエラー:未処理のインスペクタエラー
- 14. セレンを使用してファイルアップロードボタンを処理する方法は?
- 15. jquery-uiオートコンプリートでのカスタムソースからのデータの処理
- 16. セレンのwebdriverを通してポップアップでリンクを処理する
- 17. セレンのタイムアウトを効果的に処理するには?
- 18. セレンの動的行を処理する方法は?
- 19. セレンのdrupalウェブサイトのサイトガードを処理する方法は?
- 20. Ready QueueからJob Queueへの処理を処理できますか?
- 21. セレン - イベントリスナー(C#)でポップアップを処理する方法
- 22. セレンIDEの検索でフィールド選択を処理する方法
- 23. セレンのwebdriverでグレートチャイルドウィンドウを処理する方法
- 24. セレンIDEでダイナミックIDを処理する方法
- 25. セレンのwebdriverで手作業で処理する方法
- 26. チャクラコアでxmlを処理することはできますか?
- 27. セレンの各テキストフィールドをどのように反復処理するのですか?
- 28. Perlでエラーチェックをきれいに処理できますか?
- 29. POSTデータを処理できず、イメージングのアップロードプロセスを処理できません
- 30. Syncanoはインポート.xlsを処理できますか?
あなたはAJAXの機能としてではなく、機能性に建てブラウザとしてオートコンプリートを意味ですか? – guerda