【问题标题】:Getting error "type of expression must be an array type but it is resolved to Llist<WebElement>"收到错误“表达式类型必须是数组类型,但它被解析为 Llist<WebElement>”
【发布时间】:2026-01-10 10:40:01
【问题描述】:

在 Java 中使用 Selenium Web 驱动程序 - 尝试从下拉菜单中获取所有值并将其存储到列表中,然后检查给定值是否存在于列表中。如果存在,则返回 true,否则返回 false。我是硒的新手,慢慢学习东西可以帮助我解决这个问题。谢谢


 public void verifyResults() {
Boolean found=false;
    WebElement ele=driver.findElement(By.xpath("/html/body/div[1]/div/form/div[3]/div[1]/div[1]/div[2]/div/div[1]/div/div[2]/ul")); 
 Select sel = new Select(ele);
List<WebElement> el = sel.getOptions();
for(int i=0;i<el.size();i++){
     if(el[i].Equals("Agra")) {
          found=true;
break;
}
}
if(found){
     System.out.println(ele.getText());
}


   }

【问题讨论】:

    标签: java arrays list selenium-webdriver


    【解决方案1】:

    Lists 在 java 中没有 [] 运算符,只有数组。相反,您可以使用get 方法。

    此外,您分享的 sn-p 中还有一些其他问题。首先,请注意它是equals,而不是Equals。其次,el 中的元素是WebElements,而不是字符串,因此元素永远不会等于“Agra”。我假设您打算将它与元素的文本进行比较:

    for (int i = 0; i < el.size(); i++){
         if (el.get(i).getText().equals("Agra")) {
              found = true;
              break;
         }
    }
    

    作为旁注,值得注意的是,使用流可以大大缩短代码:

    boolean found = el.stream().anyMatch(e -> e.getText().equals("Agra"));
    

    【讨论】:

    • 感谢您的回复。但我面临另一个问题,因为“List 似乎与字符串无关”。那么可以使用什么来代替 List 来存储下拉菜单中的值列表呢?
    最近更新 更多