2016-04-01 12 views
0

私がテストしているウェブサイトは、Visual Studio C#でビルドされています。セレンのドロップダウンメニュー<Input>からオプションを選択するには?

代わりに、彼らが構築している
<select> 
    <option>...</option> 
    ... 
    ... 
</select> 

:リストとしてコード内の下位に表示される各値に

<input name="exampleName" type="text" class="rcbInput" id="exampleInput" 
    value="exampleValue" readonly="readonly" autocomplete="off"> 

を、私は通常の形式を使用していないテストするためだドロップダウンメニュー項目。

これらのリストの各項目は次のように構造内にある:

フォーム> rcbSlide> ...> rcbList> UL>李オブジェクトは、ドロップダウンメニュー内の値です


私が知りたいことは、どのようにしてこの構造のドロップダウン値を選択できますか?私は標準

Select select = new Select(driver.findElement(By.whatever())) 

を使用する場合

それは予想「を選択」の線に沿って何かを言って私にエラーを与えて、「入力」を得ました。

答えて

1

Selectクラスではこのドロップダウンにはアクセスできません。は、選択オプションの通常のドロップダウン専用に設計されています。代わりに、ドロップダウンを開き、手動でオプションを選択してください。

driver.findElement(By.cssSelector('input[value="exampleValue"]')).click(); 
+0

これはどのように機能しますか?要素を見つけて.click()を使用してドロップダウンメニューを開くことができます 問題は値が単純な

  • 要素であることです。私はそれらを適切に選択することはできません。 –

    +0

    @BobbyMwああ、その場合は、driver.findElement(By.xpath( '// li [。= "Value"]')))。これはあなたの特定のページでそれを実際に試すことができないと、私にとってはすべて推測ゲームです。希望が役立ちます。 – alecxe

    0

    これは、まず入力タグを見つける必要があります。これにより、Listコレクションにすべての値が追加されます。今度は、forループを使用して、目的の要素をクリックして移動します。

    WebElement dpdown = driver.findElement(By.xpath( "// input [@ id = 'exampleName']"));

    List<WebElement> dpListValues=dpdown.findElements(By.tagName("li")); 
    
    for (int i=0; i<dpListValues.size();i++) 
    { 
        if ((dpListValues.get(i).getText()).equals("valueYouWantToSelect)")) 
        { 
         dpListValues.get(i).click(); 
        } 
    } 
    
    } 
    
    0

    これらの値を選択するには、xpathロケータでtext()メソッドを使用できます。コードスニペットについては、下記をご覧ください。

    driver.findElement(By.xpath('.//*li[text()="Value"]')).click(); 
    

    すべての "li"要素をループしたい場合は、以下のコードを使用してください。

    List<WebElement> options = driver.findElements(By.xPath(<locator to find the parent node of all li tags>)).getTagName("li"); 
    
    for(WebElement eachOpt : options) { 
        <Array to store all values> = eachOpt.getText(); 
        // Logic you want to implement 
    } 
    

    これが役立ちます。コードの使用中に問題が発生した場合に備えてお知らせください。

    関連する問題