尝试在硒中使用@FindBy批注时出现错误

时间:2019-09-16 16:27:05

标签: java selenium testng-eclipse findby

我确实在这里遇到了这个问题,但是根据线索,“错误消失了,我不知道如何解决”。 got error while trying to use @FindBy annotation in selenium

这是我编写的代码。奇怪的是,我已经在页面对象类上定义了另一个Web元素,并且工作正常。我似乎无法理解问题所在。我只是在学习硒,从来没有遇到过这个问题。我曾尝试在网上搜索答案,但似乎找不到此特定问题的答案。

这是页面对象类上的第一个Web元素,它可以正常工作。

// 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()

1 个答案:

答案 0 :(得分:2)

请参见definition of @FindBy annotation。它仅适用于字段和类,不适用于方法。这样可以减少原本需要定位元素并将其存储到成员变量中的代码量。

如果您正在使用页面对象模式,则使用此注释定义一个成员变量。如果要使此元素在页面对象之外可用,请实现一种getter方法,该方法返回此成员变量。

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

public WebElement getClickProvinceDropDownArrow() {
    return clickProvinceDropDownArrow;
}