Как справиться с выпадающими годами и месяцами с помощью Selenium? - PullRequest
0 голосов
/ 05 апреля 2019

Может кто-нибудь подсказать, как выбрать год и месяц с помощью Java в Selenium?

Использовал код, указанный ниже, но он не работал.

Java-код:

{
List<WebElement> NomDOBYear =  driver.findElements(By.className("ui-datepicker-year"));
Select selectYear= new Select((WebElement) NomDOBYear);
selectYear.selectByVisibleText("1991");


WebElement NomDOBMonth = (WebElement) driver.findElements(By.className("ui-datepicker-year"));
Select selectMonth= new Select(NomDOBMonth);
selectMonth.selectByVisibleText("Nov");
}

1 Ответ

0 голосов
/ 05 апреля 2019

Использование

driver.findElement (By.className ( "щ-DatePicker год"));

вместо

driver.findElements (By.className ( "щ-DatePicker год"));

Когда вы используете driver.findElements (By.className ("ui-datepicker-year")), вы сохраняете возвращаемые элементы в списке (я ожидаю, что есть 2 или более элементов с тем же className, что и "ui- DatePicker год "). Итак, если это так, то вы должны заметить, что конструктор «Select» класса selenium принимает «WebElement» в качестве параметра, который может быть первым или любым элементом, хранящимся в списке. Тогда ваш код должен быть написан как -

List<WebElement> NomDOBYear =  driver.findElements(By.className("ui-datepicker- 
year"));
Select selectYear= new Select(NomDOBYear.get(0));//first element of the list
selectYear.selectByVisibleText("1991");


WebElement NomDOBMonth = driver.findElement(By.className("ui- 
datepicker-month"));// you got the class name wrong here
Select selectMonth= new Select(NomDOBMonth);
selectMonth.selectByVisibleText("Nov");

В противном случае, если во всем DOM есть только 1 элемент с className "ui-datepicker-year" или "ui-datepicker-month", тогда ваш код должен быть записан как -

WebElement NomDOBYear =  driver.findElement(By.className("ui-datepicker-year"));
Select selectYear= new Select(NomDOBYear);
selectYear.selectByVisibleText("1991");


WebElement NomDOBMonth = driver.findElement(By.className("ui-datepicker-month"));
Select selectMonth= new Select(NomDOBMonth);
selectMonth.selectByVisibleText("Nov");

Я бы по-прежнему рекомендовал использовать XPath для поиска элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...