2

Android デバイス用の Web サイトのテスト ケースを作成しています。ページのドロップダウンリストからオプションを選択する必要があります。しかし、Android Webドライバーはそれに関する解決策を提供していないようです。

Select API を試しましたが、機能しません。

コードスニペット

      Select loginType = new Select(this.driver.findElement(By.xpath(LOGIN_TYPE_CHOICE)));
      loginType.selectByValue("smartphone");
      driver.findElement(By.id(LOGIN_BUTTON)).click();

いくつかの回避策を探しています。

4

3 に答える 3

3

私はc#を使用して、Android、Firefox Chrome、およびIEに対してセレンテストを実行していますが、Androidドライバーで同じ問題を抱えています。

これは私にとってはうまくいきました:(Javaの規則に従ってコードをリファクタリングすると、Javaで動作するはずです)

string jsToBeExecuted="document.getElementById('<insert dropdown Id here>').selectedIndex=<insert index here>";

IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)this.Driver;
jsExecutor.ExecuteScript(jsToBeExecuted);

画面に変更が反映されないことに注意してください。! !

要素を送信すると、選択したインデックスが使用されます。テキストまたは好きなもので要素を選択するために微調整を追加するかどうかは、あなた次第です。

于 2013-03-07T15:04:31.810 に答える
0

私は、セレンを使用した自動化 Web アプリケーションの経験から、次の仮定を持っています。私が知っているように、セレンは目に見えない(非アクティブである)と見なされるため、ドロップダウンオプションと直接対話することはできません。それが常に機能する方法は、これにjsを使用することです。まず、cssセレクターで適切に要素を見つけ、firepathで検証します(ffoxのfirebugへのアドオン) ここに画像の説明を入力

したがって、css sselector を取得します。

String css=....;
public void jsClickByCss(String cssLocator){
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssLocator+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
}
jsClickByCss(css);

Builder 、高度なユーザー対話 APIを使用して別のアプローチを試すこともできます。アイデアは非常に単純です。まず、ドロップダウンをロールダウンして、クリックしたい要素が表示されるようにし、driver.manage.timeoutで待機してから、必要なドロップダウン要素を選択してクリックする必要があります。

WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.MoveToElement(mnEle).perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click();

ここでいくつかの追加情報を読むことができます これがうまくいくことを願っています)

于 2012-09-12T12:20:00.547 に答える
0

Rubyのソリューションは次のとおりです。

リストから値を選択するには、javascript を実行する必要があります。以下に例を示します。

HTML:

<select id="select_id">
   <option id="option_id_1" value="value_1" name="OPTION1"> OPTION1 </option>
   <option id="option_id_2" value="value_2" name="OPTION2"> OPTION2 </option>

更新: はるかに簡単な方法: $('#select_id').val(value_1)

コード: id 属性で要素を検索:

browser.execute_script("$('#select_id').val($('#option_id_1').val())")

name 属性で要素を検索:

browser.execute_script("$('#select_id').val($('option[name=OPTION2]').val())")

私にとって完璧に機能します。

于 2013-01-16T01:38:27.787 に答える