如何使用Java检查SeleniumWebDriver中下拉列表中的选项是否显示两次

如何使用Java检查SeleniumWebDriver中下拉列表中的选项是否显示两次,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我陷入了一个逻辑,我必须验证下拉列表中的选项是否显示了两次。我在谷歌上搜索这个解决方案,但没有找到 我有这个代码可以从下拉列表中获取所有选项。但我不确定该如何检查选项是否显示两次 新建Selectdriver.findElementBy.xpath/*[@id='unappedtech'].selectByVisibleTextVisibleText; 新建Selectdriver.findElementBy.xpath/*[@id='unappedtech'].getOptions; 在我的应

我陷入了一个逻辑,我必须验证下拉列表中的选项是否显示了两次。我在谷歌上搜索这个解决方案,但没有找到

我有这个代码可以从下拉列表中获取所有选项。但我不确定该如何检查选项是否显示两次

新建Selectdriver.findElementBy.xpath/*[@id='unappedtech'].selectByVisibleTextVisibleText; 新建Selectdriver.findElementBy.xpath/*[@id='unappedtech'].getOptions; 在我的应用程序中,选项在下拉列表中显示两次。以下是下拉列表的源代码:

云服务保证 针对数据中心和云的云服务保障Zenoss 客户协作 桌面虚拟化 设施 即时通讯 移动协作 网络地址转换 网络 安全 存储 测试技术\u不\u删除 统一通信 VCH视频 虚拟化和整合 技术 无线的 云服务保证 针对数据中心和云的云服务保障Zenoss 客户协作 桌面虚拟化 设施 即时通讯 移动协作 网络地址转换 网络 安全 存储 测试技术\u不\u删除 统一通信 VCH视频 虚拟化和整合 技术 无线的
我不是Java人,所以请原谅我,但您本质上只是想循环选择的所有选项,保留它们的记录,并确保每个循环迭代一次,该选项不存在,因此伪代码:

Select selectElement = new Select(driver.findElement(By.xpath(//*[@id='unmappedTech'])));
ArrayList<string> options = new ArrayList<string>();
for (WebElement element in selectElement.getOptions()) {
    if (options.contains(element.getText())) {
        // do something that lets the test fail because the option is listed twice
    }
    options.add(element.getText());
}

这不是Selenium的问题,它只是比较一个列表,看看该列表中是否已经包含了某些内容。

这是java代码。本质上是通过重新检查集合来检查是否发现重复

List<WebElement> options = driver.findElement(
        By.xpath("//*[@id='unmappedTech']")).findElements(
        By.tagName("option"));
HashSet<String> optionNames = new HashSet<>();
for (WebElement option : options) {
    if (optionNames.contains(option.getText()))
        System.out.println("Duplicate found");
    else
        optionNames.add(option.getText());
}

你的应用程序应该在下拉列表中有重复的选项吗?我不确定你是想报告通过还是失败。
Select s = new Select(driver.findElement(
                By.xpath("//Select[@id='unmappedTech']")));
        List<WebElement> list = s.getOptions();
        Set<String> listNames = new HashSet<String>(list.size());
        for (WebElement element : list) {
           //Set will not allow to add duplicate value
            if(listNames.add(element.getText())==false){
                System.out.println("Duplicate value is: "+element.getText());
            }
        }