1

div タグを使用して記述されたドロップダウン リストがあります。Selenium は、表示されていない要素を識別できず、エラーをスローします。JS コードを使用してスクロールする - .scrollBy(0,y) オプションはここでは機能しません。

ドロップダウン リストは、select タグを使用して記述されていません。それはリストのようなものです。リストは最初にピッカー ボタンとして表示されます。クリックするとスクロール可能なリストが表示されます。リストは div タグを使用して記述されます。

<div id="xxx_pickerMenuItem1" type = "button">
    <div id = "xxx_pickerMenuItem1_text">Text1</div>
<div>
<div id="xxx_pickerMenuItem2" type = "button">
    <div id = "xxx_pickerMenuItem2_text">Text2</div>
<div>
.
.
.
.

リストを下にスクロールして、必要な要素が表示されているかどうかを確認する方法はありますか?

4

2 に答える 2

1

以下に示すように、WebElement を Select オブジェクトにラップするだけです。

Select dropdown = new Select(driver.findElement(By.id("identifier")));

これが完了したら、3 つの方法で必要な値を選択できます。このようなHTMLファイルを考えてみましょう

<html>
<body>
<select id = "designation">
<option value = "MD">MD</option>
<option value = "prog"> Programmer </option>
<option value = "CEO"> CEO </option>
</option>
</select>
<body>
</html>

ドロップダウンを特定するには

Select dropdown = new Select(driver.findElement(By.id("designation")));

そのオプションを選択するには、「プログラマー」と言います。

dropdown.selectByVisibleText("Programmer ");

また

dropdown.selectByIndex(1);

また

dropdown.selectByValue("prog");

値が存在しない場合は、 WebDriverException が発生します。

編集:ドロップダウンはdivを使用して構成されてい ます

driver.findElement(By.name("applicantContact.areaOfOd")).click()
driver.findElement(By.name("applicantContact.areaOfOd")).sendKeys(
                            Keys.ARROW_DOWN);
driver.findElement(By.name("applicantContact.areaOfOd")).sendKeys(
                            Keys.ARROW_DOWN);
driver.findElement(By.name("applicantContact.areaOfOd")).sendKeys(Keys.ENTER);

上記のコードは要素をクリックし、下向き矢印を 2 回押してから Enter キーを押します。これがソリューションの組み立てに役立つことを願っています。

于 2013-09-02T12:09:34.757 に答える