我测试的网站是使用Visual Studio C#构建的。我要测试的下拉菜单不使用通常的格式:
<select>
<option>...</option>
...
...
</select>
相反,他们已经建立了:
<input name="exampleName" type="text" class="rcbInput" id="exampleInput"
value="exampleValue" readonly="readonly" autocomplete="off">
每个值在代码中显示为列表项下方。
每个列表项都在以下结构中:
表单&gt; rcbSlide&gt; ...&gt; rcbList&gt; ul&gt; li
其中li对象是下拉菜单中的值。
我想知道的是,如何在此结构中选择下拉值?
当我使用标准
时Select select = new Select(driver.findElement(By.whatever()))
它给出了一个错误,说明了“选择&#39;预期,得到了输入&#39;。
答案 0 :(得分:1)
您无法使用Select
类来处理此下拉列表 - 它仅适用于选择选项常规下拉列表。而是打开下拉列表并手动选择选项:
driver.findElement(By.cssSelector('input[value="exampleValue"]')).click();
答案 1 :(得分:0)
为此,您需要先找到输入标签。这会将所有值添加到List集合中。现在使用for循环遍历它并单击所需元素
WebElement dpdown = driver.findElement(By.xpath(&#34; //输入[@id =&#39; exampleName&#39;]&#34;));
List<WebElement> dpListValues=dpdown.findElements(By.tagName("li"));
for (int i=0; i<dpListValues.size();i++)
{
if ((dpListValues.get(i).getText()).equals("valueYouWantToSelect)"))
{
dpListValues.get(i).click();
}
}
}
答案 2 :(得分:0)
为了选择这些值,我们可以在xpath定位器中使用text()方法。请在下面找到代码段。
driver.findElement(By.xpath('.//*li[text()="Value"]')).click();
如果你想循环遍历所有&#34; li&#34;元素,请使用下面的代码。
List<WebElement> options = driver.findElements(By.xPath(<locator to find the parent node of all li tags>)).getTagName("li");
for(WebElement eachOpt : options) {
<Array to store all values> = eachOpt.getText();
// Logic you want to implement
}
希望这会有所帮助。如果您在使用代码时遇到任何问题,请与我们联系。