我试图从下拉菜单中选择一个选项,直到点击定位器为止。这就是我在Firebug中看到的:
div class="selectize-input items not-full has-options">
<input type="text" autocomplete="off" tabindex="" placeholder="523-23-XXXXX" style="width: 109px; opacity: 1; position: relative; left: 0px;">
</div>
<div class="selectize-dropdown multi form-control" style="display: none; width: 263px; top: 34px; left: 0px; visibility: visible;">
<div class="selectize-dropdown-content">
<div class="option" data-selectable="" data-value="523-23-20273">523-23-20273</div>
<div class="option" data-selectable="" data-value="523-23-20274">523-23-20274</div>
<div class="option" data-selectable="" data-value="523-23-20275">523-23-20275</div>
<div class="option" data-selectable="" data-value="523-23-20276">523-23-20276</div>
<div class="option" data-selectable="" data-value="523-23-20280">523-23-20280</div>
<div class="option" data-selectable="" data-value="523-23-202801">523-23-202801</div>
到目前为止我的代码是:
public void selectAgentCodes(String agentCode)
{
driver.findElement(byAgentCodes).click();
new WebDriverWait(driver, 5).until(ExpectedConditions.visibilityOfElementLocated(By.className("selectize-dropdown-content")));
Select select = new Select(driver.findElement(By.className("selectize-dropwodn-content")));
select.selectByVisibleText(agentCode);
}
我得到一个 UnexpectedTagNameException:元素应该是&#34;选择&#34;但是&#34; div&#34; 。我不确定如何处理这个,因为我之前只使用过选择。
让我们说我想选择&#34; 523-23-20275&#34;代理商代码。我该怎么做?
任何帮助表示赞赏!感谢。
答案 0 :(得分:4)
这不是正常的下拉选择菜单。因此,在这种情况下使用Select
将不起作用。如果没有看到完整的网站,我不确定要选择它必须做些什么。
但是,当下拉列表中的选项可见时,只需点击div
元素即可。
//I'm assuming that this will display the dropdown list
driver.findElement(byAgentCodes).click();
driver.findElement(By.xpath("//div[@data-value='523-23-20275']"));
答案 1 :(得分:0)
这里,如果UI中没有选择标记,则选择类将不起作用,您需要单击主div,然后您需要单击任何具有多个选项的div,它将首先单击下拉列表然后单击列表中的特定元素, 下面的代码有望为你工作....
1)首先你需要点击这个div,通过id,xpath,css选择器等任何可用方法找到它, driver.findElement(byAgentCodes)。单击(); 点击此按钮将打开一个下拉列表
2)重复上述第1点,点击下拉列表中的任何列表项
523-23-20275这将有效。
答案 2 :(得分:0)
请按照以下步骤在div标签下选择一个项目:
您必须使用collections对象来存储所有存储在同一标签下的子元素。 对于Ex,如果您具有以下HTML结构:
<div id="Year">
<div class="abc">
<ul class = "xyz">
<li id=1>2000</li>
<li id=2>2001</li>
<li id=3>2002</li>
<li id=4>2003</li>
<li id=5>2004</li>
</ul>
</div>
</div>
在硒代码下面写上
:List<Webelement> lst = driver.findElements(By.xpath(<locator of child elements>));
//In this case it is //div[@id='Year']/div/ul/li
系统会将所有子元素存储在列表中,然后您可以使用索引方法通过索引方法选择任何元素
lst.get(<index value>).click();
如果您不想使用索引查找,而是文本,请使用Iterator界面从集合中查找元素,然后单击该元素:
Iterator<Webelement> it = lst.iterator();
while (it.hasNext()) {
WebElement wb = it.next();
if(wb.getText().equals(<Text to find in double quotes>)) {
wb.click();
break;
}
}