尝试查找 WebElement 时出现 NullpointerException

NullpointerException when trying to find a WebElement

我正在尝试使用以下代码查找网络元素:

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

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

  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 变量。

出于某种原因正在使用您的网络元素来查找该元素。使用您的网站 driver.

改变loc_Start

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

你的 driver 名字

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

我也遇到了同样的错误。我犯的错误是试图使用 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();

希望对您有所帮助!!!