如何将 WebElements 存储在数组中

How to store WebElements in an array

我只是想知道如何将以下 webElements 存储在数组中。

 WebElement NameLbl = driver.findElement(By.xpath("//h3[contains(text(),'Name')]"));
            WebElement MobLbl = driver.findElement(By.xpath("//h3[contains(text(),'Mobile')]"));
            WebElement LookingLbl = driver.findElement(By.xpath("//h3[contains(text(),'Looking for ')]"));
            WebElement GenderLbl = driver.findElement(By.xpath("//h3[contains(text(),'Gender')]"));
            WebElement MandatoryList = driver.findElement(By.xpath("//span[contains(text(),'*')]"));

我正在尝试使用下面的行来存储它,但它给出了一个错误。

List<WebElement> ExpList=new ArrayList<WebElement>() {NameLbl,MobLbl,LookingLbl,GenderLbl};

你不能像那样实例化列表。

您可能想要的是:

List<WebElement> ExpList = List.of(NameLbl, MobLbl, LookingLbl, GenderLbl);

它将您传递的参数转换为正确类型的列表。

我伤口建议另一种方法..

您可以使用 Robo Mop 建议的方法,但是 这不会让您稍后修改该列表。假设您有代码:

List<Object> objectList = Arrays.asList(new Object(), new Object());
objectList.add(new Object());
System.out.println(objectList);

上面的代码会抛出异常

Exception in thread "main" java.lang.UnsupportedOperationException at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111)

相反,我建议使用此方法:

List<Object> objectList = Stream.of(new Object(), new Object()).collect(Collectors.toList());
objectList.add(new Object());
System.out.println(objectList);

这将创建 ArrayList 对象,就像您进行试验一样。