2017-09-27 4 views
0

私はmd-selectドロップダウンWebElementを持っています。私が行って、それはmd-optionsだ得ることができます。セレクションでmd-selectオプションリストを取得

List<WebElement> dropDownElements = myDropDown.findElements(By.tagName("md-option"));` 

これは私にmd-optionsのリストを取得します。このリストには予想されるアイテム数があります。 しかし、これらのテキストが正しいことを確認したいのですが、md-optionsが正しいです。これらのWebElementsのvalue属性は[object Object]です。実際のテキストが必要です。

ウェブ要素のフィールドをトラバースすると、firstChild_data_フィールドのfirstChild_が実際のテキストを持っていることがわかります(空白がたくさんあります)。 DomTextオブジェクトにあります。しかし、APIにはgetChild()のようなものはありません。とにかくそれは大変だと思いますか?

md-optionsのテキストコンテンツに簡単にアクセスするにはどうすればよいですか?私はxpathを使って私が望むものを手に入れることができますか?どのように私はそのクエリを行うだろうか?

HTML:

<md-input-container class="my-container" flex-gt-sm> 
    <label>Some Label</label> 
    <md-select ng-model="myCtrl.selectedItem" required id="myDropDown"> 
     <md-option ng-value="selectedItem" 
        ng-repeat="selectedItem in myCtrl.itemList"> 
      {{selectedItem.thing1 + ': ' + selectedItem.thing2}} 
     </md-option> 
    </md-select> 
</md-input-container> 
+0

ためのtehの文字列値は、あなたのHTMLコードを共有することができます取得するには、このヘルパーメソッドを作成しましたか? – Murthi

+0

オプションの属性値を読み込むとどうなりますか? In#: IWebElement firstOption = dropDownElements [0]; var valueOfFirstOption = firstOption.GetAttribute( "value"); –

+0

HTMLが追加されました。 @KoenMeijer、私がそれをすると、私は[オブジェクト、オブジェクト]をテキストとして取得します。私はまた、項目を展開するmd-selectを選択しようとしましたが、それはテキストを取得する上で効果がないようです。 –

答えて

0

私は与えられたmdSelect

public static List<String> getStringsInMdSelect(WebElement mdSelect) { 
    List<String> selectionStrings = new ArrayList<>(); 
    WebElement contentElement = mdSelect.findElement(By.tagName("md-content")); 
    List<WebElement> contentDivs = contentElement.findElements(By.tagName("div")); 

    for (WebElement contentDiv : contentDivs) { 
     String rawText = contentDiv.getAttribute("textContent"); 
     selectionStrings.add(rawText.trim()); 
    } 
    return selectionStrings; 
}