我们有一个使用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>
.
.
.
.
有没有办法向下滚动列表并检查是否显示所需的元素?
答案 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)
尝试在不使用箭头或滚动按钮的情况下确定如何选择。通常,您可以单击按钮然后开始键入以快速选择列表中的正确项目。在硒中,这将是这些步骤......
或者,你可以