当前位置: 首页 > 知识库问答 >
问题:

从div类下拉列表中选择-Selenium

罗和煦
2023-03-14

我正在尝试从下拉列表中选择一个选项,该选项在单击定位器之前不会填充。这是我在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);
    }

我得到一个意外的TagNameException:元素应该是“选择”,但是“div”。我不知道如何处理这个,因为我以前只使用过选择。

假设我想为代理代码选择“523-23-20275”。我该怎么做?

感谢您的帮助!谢谢

共有3个答案

夔建章
2023-03-14

按照以下步骤选择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>

写下selenium代码:

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<Webelement> it = lst.iterator();
while (it.hasNext()) {
    WebElement wb  = it.next();
    if(wb.getText().equals(<Text to find in double quotes>)) {
        wb.click();
        break;
    }

}
魏冷勋
2023-03-14

在这里,如果UI中没有选择标记,选择类将无法工作,您需要单击主div,然后您需要单击具有多个选项的div中的任何一个,它将首先单击下拉列表,然后单击列表中的特定元素,下面的代码将有望为您工作......

1) 首先,您需要通过id、xpath、css选择器、driver等任何可用方法来单击这个div。findElement(代理代码)。单击();单击此按钮将打开下拉列表

2) 重复上述第1点,单击下拉列表中的任何列表项

那将工作。

晁文斌
2023-03-14

这不是正常的下拉选择菜单。因此,在这种情况下,使用选择将不起作用。在没有看到完整的网站之前,我不确定到底要做什么才能选择它。

但是,当下拉列表中的选项可见时,请尝试简单地单击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']"));
 类似资料:
  • 我是硒的新手,我试图从下拉列表中选择一个选项。下拉列表的超文本标记语言如下: WebElement的是: 我已经尝试了几乎所有的方法,我可以在互联网上找到,但没有任何效果。我试图使用类,包装了,但它抛出了一个异常。 我试图丢失列表中的所有选项,但在这种情况下得到了异常应该有标签,但它有。我需要使用作为findelements的标识符。 请帮我解决这个问题。

  • 假设用户从下拉列表中选择option2,那么f1()将在下拉列表的值发生更改时执行,我正在监听更改事件。现在,用户再次单击下拉列表并选择option2,在这种情况下,下拉列表的值不变,因此f1不会执行。现在,我希望每次用户从下拉列表中选择某个值时都执行f1,无论值是否更改。

  • 问题内容: 我创建了一个客户c#DropDownList控件,可以将其内容呈现为optgroup(不是从头开始,我编辑了一些在Internet上找到的代码,尽管我确切地了解了它的作用),并且工作正常。 但是,我现在遇到一种情况,我需要在下拉菜单中有两个缩进级别,即 但是,在上面的示例代码段中,它呈现的缩进量与相同。 有没有一种方法可以产生我想要的嵌套optgroup行为? 问题答案: 好的,如果有

  • 下面给出了一段表示下拉列表的代码。我需要在此下拉列表中选择日期值,由<代码> 以下方法无效 1。)使用“按导入组织选择”选择此值。openqa。硒。支持用户界面。选择 控制台显示: 元素应该是“选择”,但应该是“选项” 2.)首先单击下拉列表以显示要选择的选项,然后单击该选项。 控制台显示: 调试元素缺少可访问的名称:id:类型,标记名:选择,类名:文本输入ng原始ng未触及ng有效ng范围 3.

  • 我有一个用来选择某些元素的代码,当你点击geticon按钮并显示正确的选项值时,该代码工作得很好。问题是我不确定如何显示下拉菜单的选择选项值(而不是按钮)。 这是我的Jsfiddle null null

  • 我无法从selenium webdriver中的下拉列表中选择值。我尝试了所有使用名称和xpath选择器的方法。请帮忙。 代码是: