使用webdriver滚动div标签列表

时间:2013-09-02 11:48:24

标签: html selenium scroll selenium-webdriver

我们有一个使用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>
.
.
.
.

有没有办法向下滚动列表并检查是否显示所需的元素?

2 个答案:

答案 0 :(得分:1)

将WebElement包装到Select Object中,如下所示

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);

上面的代码确实单击了元素,然后按两次箭头键,然后按Enter键。希望这有助于您构建解决方案。

答案 1 :(得分:0)

尝试在不使用箭头或滚动按钮的情况下确定如何选择。通常,您可以单击按钮然后开始键入以快速选择列表中的正确项目。在硒中,这将是这些步骤......

  1. 点击选择按钮
  2. 选择div列表并使用“SendKeys”并输入显示的确切文本。如果您需要单击“输入”以选择所需的项目,则可以发送“\ n”。此外,您可能需要首先对其进行焦点事件。
  3. 现在已经选择了该项目,您只需获取所选项目的.Text即可。
  4. 或者,你可以

    1. 点击选择按钮
    2. 选择包含列表的元素并使用(string allOptions = myElement.Text;)
    3. 看看它是否在列表中(bool textFound = allOptions.Contains(“我正在寻找的”);)