@ FindBy не позволяет выполнять вычисления во время выполнения. В качестве аннотации он запускается еще до запуска сценария.
Чтобы использовать переменную в @ FindBy
Это не поможет в этой ситуации, но может пригодиться в будущем. Ключ использует тег final
на вашей строке. И поэтому ему должно быть назначено что-то.
public final String cMonday= "button.datepicker-cal-date[data-day='Monday']";
@FindBy(css = cMonday)
public WebElement dayOfWeekMonday;
Как обычно, я начинаю переменную с типа локатора, 'c' для css и 'x' для xpath, поэтому я не путаю их.
Для вашей ситуации ...
Используйте Список <> и выберите правильный способ доступа
Сначала создайте список всех кнопок:
@FindBy(css = "button.datepicker-cal-date")
private List<WebElement> dayOfTheWeekButtons;
Затем выберите нужный метод:
public void clickOnSelectDay(String day){
for(WebElement dayName : dayOfTheWeekButtons) {
if(day.equals(dayName.getAttribute("data-day")) {
System.out.println("Click on select day on the data picker: " + day);
dayName.click();
break;
}
}
fail();
}
Код может нуждаться в доработке, но вы должны понять это. Из списка имен, сохраненных в списке «день данных», пролистайте, пока не найдете правильное значение, а затем щелкните его.