尝试查找WebElement时出现NullpointerException

时间:2015-08-20 16:08:25

标签: java selenium selenium-webdriver automation

我正在尝试使用以下代码找到webelement:

private WebElement loc_Start;
public void clickButton() {
    loc_Start.findElement(By.xpath("//button[contains(text(), 'Start')]")).click();  
}

我没有看到代码中的任何错误。我也试过使用@FindBy注释,这给了我同样的错误。

3 个答案:

答案 0 :(得分:2)

  1. 如果您尝试使用PageFactory实现它,

    public class Page{ @FindBy(xpath=" //button[contains(text(), 'Start')] ") private WebElement loc_Start; public void clickButton() { // to initialize page - else u will get null pointer exception Page page = PageFactory.init(driver, Page.class); page.loc_Start.click(); } }

  2. 如果不使用页面工厂

    private WebElement loc_Start = driver.findElement(By.xpath("//button[contains(text(), 'Start')]")); public void clickButton() { loc_Start.click (); }

    您正在获取NullPointerException,因为您尚未初始化loc_Start变量。

答案 1 :(得分:0)

您的webelement由于某种原因被用于查找元素。使用您的网络驱动程序。

更改loc_Start

 loc_Start.findElement(By.xpath("//button[contains(text(), 'Start')]")).click(); 

到您的驱动程序名称

driver.findElement(By.xpath("//button[contains(text(), 'Start')]")).click(); 

答案 2 :(得分:-1)

我也遇到了同样的错误。我做的错误是尝试使用Webelement查找元素。相反,我应该使用Webdriver来做到这一点,例如

Webelement myelement=driver.findelement(by.xpath());
myelement.click() // or whatever function you want to perform.

在将驱动程序首次初始化为webelement之后,我们可以直接使用webelemnt查找元素,而无需使用

myelement.findelement(by.xpath()).click();

注意:在第一次安装webdriver后,这种直接使用webelement查找元素的方法是明智的。在每个函数中,您都必须像这样使用它:-

Webelement myelement=driver.findelement(by.xpath());
myelement.click();

然后对于下一个元素,我们可以使用->

myelement.findelement(by.xpath()).click();

希望这会有所帮助!