【问题标题】:Remove Duplicate from Dropdown in Selenium WebDriver using Java使用 Java 从 Selenium WebDriver 中的下拉列表中删除重复项
【发布时间】:2021-10-17 14:31:31
【问题描述】:

如果我想使用 Selenium WebDriverJava 从下拉列表中删除重复项,我找到了一些解决方案。

他们将元素存储在 List 中,然后使用 Set 删除重复项。为什么我们使用 List 然后我们将列表存储在 Set 中?我知道如果有多个元素我们需要 List 但是,我们可以只使用 Set 而不使用 List 吗?

WebElement element = driver.findElement(By.id(“dropdown“));
Select select= new Select(element)     
List<WebElement> list = select.getOptions();
Set set = new HashSet ();
for (WebElement element : list) {    
    set.add(element);
}

【问题讨论】:

    标签: java list selenium set dropdown


    【解决方案1】:

    因为你使用了getOptions(),如果你在内部检查,它的返回类型是List&lt;WebElement&gt;所以,如果你直接使用Set&lt;WebElement&gt;,它会抛出编译时错误Type mismatch: cannot convert from List&lt;WebElement&gt; to Set&lt;WebElement&gt;

    getOptions()的内部实现

    public List<WebElement> getOptions() {
    return element.findElements(By.tagName("option"));
    }
    

    你可以查看here

    【讨论】:

    • 非常感谢,现在我明白了原因。
    • 如果您接受答案,我将不胜感激,因此这将有助于其他人解决他们的问题并理解这个概念
    • 我通过点击投票按钮为你投票,但我不知道我做得对与否。 :) 这是我的第一个问题,我不太了解该应用程序。谢谢。
    【解决方案2】:

    看,

    列表

    有序集合(也称为序列)。这个用户 界面可以精确控制每个元素在列表中的位置 插入。用户可以通过整数索引访问元素 (在列表中的位置),并在列表中搜索元素。

    设置

    不包含重复元素的集合。更正式地说,集合 不包含元素对 e1 和 e2 使得 e1.equals(e2),并且在 最多一个空元素。正如它的名字所暗示的,这个接口模型 数学集合抽象。

    现在来回答你的问题,

    Why we are using List then we store the list in Set? - it's cause return type of 
    .getOptions(); is basically **List<WebElement>**, you need to typecast like below :- 
    

    示例代码:

     WebElement element = driver.findElement(By.id("dropdown"));
     Select select= new Select(element)  ;   
     HashSet<WebElement> listOfOptions = (HashSet<WebElement>) select.getOptions();
     for (WebElement ele : listOfOptions) {
         System.out.println(ele);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多