#java #selenium #selenium-webdriver #webdriver
#java #selenium #selenium-webdriver #webdriver
Вопрос:
Я просто хотел знать, как сохранить следующие 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};
Комментарии:
1. Какую ошибку он вам показывает?
Ответ №1:
Вы не можете создавать экземпляры подобных списков.
То, к чему вы, вероятно, стремились, было вот к чему:
List<WebElement> ExpList = List.of(NameLbl, MobLbl, LookingLbl, GenderLbl);
Который преобразует переданные вами аргументы в правильный тип списка.
Комментарии:
1. Спасибо, это работает . Не могли бы вы, пожалуйста, объяснить, что я делал не так, а также что делает List.of() ?
2. Я предполагаю, что вы пробовали метод инициализации коллекции с использованием массива, т. Е.
int[] arr = {0, 1, 2}
, Но это синтаксически неверно для списков.List.of
возвращает список, содержащий элементы, которые вы ему передаете, и того же типа, что и элементы. Я предполагаю, что если элементы разных типов, это вызывает ошибку, но не цитируйте меня по этому поводу 🙂
Ответ №2:
Я бы предложил другой подход..
Вы можете использовать подход, предложенный Robo Mop, однако это не позволит вам изменить этот список позже. Предположим, у вас есть код:
List<Object> objectList = Arrays.asList(new Object(), new Object());
objectList.add(new Object());
System.out.println(objectList);
Приведенный выше код вызовет исключение
Исключение в потоке «main» java.lang.Исключение UnsupportedOperationException в java.base/java.util.AbstractList.add(AbstractList.java:153) в java.base/java.util.AbstractList.добавить(AbstractList.java:111)
Вместо этого я бы предложил использовать эту оценку:
List<Object> objectList = Stream.of(new Object(), new Object()).collect(Collectors.toList());
objectList.add(new Object());
System.out.println(objectList);
Это создало бы ArrayList
объект, подобный тому, который вы делаете в своей пробной версии.