0

TestNG で Java と Webdriver を使用しています。ユーザーが薬の名前を入力して [Go] ボタンをクリックするテキスト ボックスがあります。次に、プログラムは RxNorm に対してクエリを実行し、薬剤名の強度と形状を返します。ウェブページには の id を持つdiv がありwhatDosage、その div はその薬に適した強度/フォームを持つボタンのリストです。

私の質問は、その div 内の要素の数またはユーザーに表示される強度/フォームのリストを取得するにはどうすればよいですか? 最終的には、同じ薬名で RxNorm を呼び出し、結果を比較します。

私は次のことを試しました:

(1) String resultsWebPage = driver.findElements(By.id("whatDosage")).toString();
System.out.println(resultsWebPage);

(2) int resultsWebPage = driver.findElements(By.id("whatDosage")).size();
System.out.println(resultsWebPage);

最初の単純な例は ID を返します。2番目の出力は1だけでした。入力している薬の名前は、whatDosagedivに11の結果を返します

div は次のようになります。

<div id="whatDosage" class="btn-group btn-group-vertical buttons-radio span12"    role="radiogroup">
    <input id="dosage1" class="hide" type="radio" value="20 MG Enteric Coated Capsule" name="dosage">
    <button class="btn btn-large" rel="dosage1" role="radio" type="button">20 MG Enteric Coated Capsule</button>
    <input id="dosage2" class="hide" type="radio" value="30 MG Enteric Coated Capsule" name="dosage">
    <button class="btn btn-large" rel="dosage2" role="radio" type="button">30 MG Enteric Coated Capsule</button>
    <input id="dosage3" class="hide" type="radio" value="60 MG Enteric Coated Capsule" name="dosage">
    <button class="btn btn-large" rel="dosage3" role="radio" type="button">60 MG Enteric Coated Capsule</button>
</div>

input要素が非表示になり、要素buttonが画面に表示されます。

4

2 に答える 2

3

これは、要素の配置戦略を変更することで解決できます。

私はあなたのウェブページのスケルトンが以下のようなものであると仮定しています. これは正確ではないかもしれませんが、使用するアプローチのアイデアを提供します。

<div id="whatDosage">
    <div class="strength>Data 1</div>
    <div class="strength>Data 2</div>
    <div class="strength>Data 3</div>
</div>

コードを実行すると (2):

int resultsWebPage = driver.findElements(By.id("whatDosage")).size();

それが行うことは、必要な子要素ではなく、「whatDosage」divを選択することです。"whatDosage" div が 1 つあるため、.size() を実行すると 1 が返されることがわかります。

あなたはこれの行で何かをしているはずです:

List<WebElements> results = driver.findElements(By.className("strength"));
System.out.println(results.size());

for (WebElement result : results){
    System.out.println(result.getText());
}

これにより、次の出力が得られます。

3
Data 1
Data 2
Data 3

コードに従って強度/フォーム要素を見つけるために戦略を変更する必要があります。By.id、By.className、By.xpath などのアプローチがあり、UI 要素の検索に関するセレンのドキュメントを参照できます。

于 2013-02-12T04:51:15.207 に答える
0

HTML がどのように見えるかについて @nrbaf​​na が正しいと仮定すると、それは簡単です。「強み」のリストを取得するには、次のようにします。

List<WebElement> results = driver.findElements(By.xpath("id('whatDosage')/div"));

もちろん、それらの数は次のとおりです。

int resultsCount = results.size();

もちろん、それらすべてを印刷するのは次のとおりです。

for (WebElement result : results) {
    System.out.println(result.getText());
}
于 2013-02-12T23:02:39.020 に答える