由@FindBy注释定义的Webelement返回空指针

use*_*836 1 java selenium webdriver nullpointerexception selenium-webdriver

出于某种原因,当我调用方法Spage.editExButton(int ID)时,我收到一条错误,指出WebElement首先为null.为什么它为空?我使用@FindBy注释定义了它.我必须使用findElement(By.id("xxx"))显式定义元素,以便能够单击它.但为什么我无法使用@FindBy表示法来调用它?

public class SPage extends GPage<SPage> {

    public SPage() {
        super();
    }

    public SPage(String pageType) {
        super(pageType);
    }

    @FindBy(id = "xxx")
    WebElement first;

    public WebElement eButton(int ID) {
        first.click();
        String tmp = ID + "-Edit";
        WebElement edit = getDriver().findElement(By.id(tmp));
        return edit;
    }

    public EPage cEdit(int ID) {
        eButton(ID).click();
        return new EPage(getBasePageType()).openPage(EPage.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在调用这样的方法:

static EPage epage;
static SPage spage;

@Test
public void edit_exception() {
             epage = spage.cEdit(IDbefore);
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ill 8

你需要调用它(最好在你的构造函数中):

PageFactory.initElements(getDriver(), this);
Run Code Online (Sandbox Code Playgroud)

更多信息:https://code.google.com/p/selenium/wiki/PageFactory