Получение ошибки при попытке использовать аннотацию @FindBy в селене

Я столкнулся с этой проблемой здесь, но, согласно потоку, «ошибка исчезла, и я не знаю, как ее исправить»... получила ошибку при попытке использовать аннотацию @FindBy в селене

Вот код, который я написал. Странно то, что у меня уже есть другой веб-элемент, определенный в классе объектов страницы, и он отлично работает. Я просто не могу понять, в чем проблема. Я только изучаю селен и никогда раньше не сталкивался с этой проблемой. Я пробовал искать в Интернете ответы, но, похоже, не нашел ответа на этот конкретный вопрос.

Это первый веб-элемент в классе объектов страницы, и он отлично работает.

// Profile button element
@FindBy(xpath="//div[@class='container']//nav//li[2]//a[1]")
@CacheLookup // is used to improve the performance 
static WebElement profileBtn;

С этим элементом (в том же классе объектов страницы) я получаю «Аннотация @FindBy запрещена для этого местоположения». Я попытался перезапустить eclipse и очистить проект, но он не разрешит этот второй элемент.

@FindBy(xpath="//div[@id='stateDropdown-styler']//div[@class='jq-selectbox__trigger']")
@CacheLookup // is used to improve the performance
WebElement clickProvinceDropDownArrow()

person Steve Clelland    schedule 16.09.2019    source источник
comment
Просто удалите () из WebElement clickProvinceDropDownArrow(). @mentallurg предоставил более надежный ответ   -  person Fenio    schedule 17.09.2019
comment
Спасибо за ответ. Часа через два я понял, что я сделал не так. Хотя очень ценится!   -  person Steve Clelland    schedule 17.09.2019


Ответы (1)


См. определение Аннотация @FindBy. Он применим только к полям и классам, но не к методам. Это уменьшает объем кода, который в противном случае вам пришлось бы написать, чтобы найти элемент и сохранить его в переменной-члене.

Если вы используете шаблон объекта страницы, определите переменную-член с этой аннотацией. Если вы хотите сделать этот элемент доступным за пределами вашего объекта страницы, реализуйте метод получения, который возвращает эту переменную-член.

@FindBy(xpath="//div[@id='stateDropdown-styler']//div[@class='jq-selectbox__trigger']")
private WebElement clickProvinceDropDownArrow;

public WebElement getClickProvinceDropDownArrow() {
    return clickProvinceDropDownArrow;
}
person mentallurg    schedule 16.09.2019
comment
Спасибо за Ваш ответ. Я все еще новичок в автоматическом тестировании (в кооперативе), и я по ошибке поставил (), когда это должно было быть; Я узнаю у своего лидера кооператива об использовании метода геттера, который вы предлагаете. Это не было предложено ни в одном из моих классов. Я предполагаю, что это считается лучшей практикой. - person Steve Clelland; 17.09.2019