Selenium - 在同一个类中使用@FindBy和传统的driver.findByElement

时间:2017-02-22 11:12:47

标签: java selenium

大家好我在@FindBy注释中使用了@FindBy注释,在基类中,即所有页面的父类,我已经将pagefactory转化为如下所示:

的BasePage:

public BasePage(WebDriver driver){

      PageFactory.initElements(driver, this);
}

子页面:

@FindBy(id = "ctl00_ContentPlaceHolder1_physicianList")

WebElement myElement;

到目前为止,一切正常。

现在我需要将一些参数附加到地址,因为我需要它来进行一些逻辑实现。

由于@FindBy只能用于静态地址,我决定使用传统的driver.findElementBy ...

如下所示:

WebElement report = driver.findElement(By.id("ctl00" + noOfPatients + "_LinkButton2"));

但是当我运行这个时,我得到一个nullpointer异常。

这不是地址的问题,因为我已尝试对上述ID进行硬编码并将其设置为静态,如下所示:

ctl004_LinkBut​​ton2

我仍然遇到了nullpointer异常,而当我使用@FindBy尝试静态时,它运行正常。

有人可以提供一些意见。

谢谢

1 个答案:

答案 0 :(得分:0)

嗨,伙计们,我想出了问题所在。我得到驱动程序的值为null因此nullpointer异常。我曾经在子类中添加了一个Webdriver驱动程序实现,我忘了删除它。这导致了这个问题。