无法调用“org.openqa.selenium.WebDriver.findElement(org.openqa.selenium.By)”,因为“this.driver”为空

当我尝试在 testNg 中运行 null pointer exception 中显示的以下代码时

Eclipse

stack overflow Cannot invoke "org.openqa.selenium.WebDriver.findElement(org.openqa.selenium.By)" because "this.driver" is null
原文答案

答案:

作者头像

只需从启动browser()中删除WebDriver,我希望这对您有用;)

    public class ImgDDChkbxRadio  {
    WebDriver driver;

    @BeforeTest
    public void LaunchBrowser()
    {

    System.setProperty("webdriver.chrome.driver","/Users/chrome/chromedriver");
        driver=new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("http://www.leafground.com/");
    }   
    @Test
    public void Img()
    {   
        driver.findElement(By.xpath("//img[@src='images/image.png']")).click();
        driver.findElement(By.xpath("//*[@src="../images/home.png"]")).click();
        driver.navigate().back();
        driver.findElement(By.xpath("//*[@src="../images/abcd.jpg"]")).click();

    }
}
作者头像

自从我发表这一评论以来,我就学会了。

我的新建议是 - 在文件开头删除所有导入,然后再次添加它们。当代码使用几个不同的版本时,可能会对适当的导入(尤其是测试套件的版本)保持谨慎。

如何添加导入?在标记的类,方法等上移动Cursour,并对您的IDE建议做出相应的反应(Alt + Enter for Windows for Windows)。

旧的,可能不安全的解决方法:

我的旧建议可能是您问题的解决方法,但可以做出很多新实例,我想这不是明智的事情。测试将起作用,但更像是副产品。

LaunchBrowser() 方法中使用Chromedriver的实例:

public class ImgDDChkbxRadio  {
    WebDriver driver = new ChromeDriver();

    @BeforeTest
    public void LaunchBrowser()
    {
        System.setProperty("webdriver.chrome.driver","F:chromedriver_win32chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("http://www.leafground.com/");
    }   
    @Test
    public void Img()
    {   
        driver.findElement(By.xpath("//img[@src='images/image.png']")).click();
        driver.findElement(By.xpath("//*[@src="../images/home.png"]")).click();
        driver.navigate().back();
        driver.findElement(By.xpath("//*[@src="../images/abcd.jpg"]")).click();

    }
}

我认为这可能是junit 5在注释(@)中进行的一些更改的结果。

作者头像

可能是该站点没有被加载 - 您是否可以手动启动该网站?

如果是,请尝试以下操作:

使WebDriver对象静态(在变量名称之前写入静态)
尝试在使用浏览器打开网站后,尝试添加thread.sleep(5000)以启动browser方法

作者头像

您正在借助WebDriver接口创建浏览器的对象。

webdriver {驱动程序= new new EdgedRiver();},但此驱动程序的范围仅在方法内。要使用它,您将其公开声明。

驱动程序的寿命仅在WebDriver接口中。制作:驱动程序= new EdgedRiver();

只能解决您的问题:java.lang.nullpointerexception:无法调用“ org.openqa.selenium.webdriver.findelement(org.openqa.selenium.by)”,因为“ this.driver”是null

package ADUMMYExersice;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class stackoverflowNull {
    WebDriver driver;

        @BeforeTest
        public void LaunchBrowser()
        {
            System.setProperty("webdriver.edge.driver", "C:Selenium FilesBrowserExemsedgedriver.exe");

            driver=new EdgeDriver();
            driver.manage().window().maximize();
            driver.get("http://www.leafground.com/");
        }   
        @Test
        public void Img()
        {   
            driver.findElement(By.xpath("//img[@src='images/image.png']")).click();
            driver.findElement(By.xpath("//*[@src="../images/home.png"]")).click();
            driver.navigate().back();
            driver.findElement(By.xpath("//*[@src="../images/abcd.jpg"]")).click();
               }
    }
作者头像

这也可能是您的Chrome浏览器的问题 - 尝试使用Firefox,但仍然无法正常工作,然后尝试更改工作空间。同样的问题浪费了6小时的尝试和搜索。用Firefox为我工作。

作者头像

受保护的静态WebDriver驱动程序;在上面使用并检查您是否在任何其他类中都使用过Web驱动程序?

作者头像

我有两个类,其中我给了一个变量名 public WebDriver driver; 但它没有用它给我一个错误消息说

线程“main”java.lang.NullPointerException 中的异常:无法调用“org.openqa.selenium.WebDriver.findElement(org.openqa.selenium.By)”,因为“this.driver”为空。

之后我找到了一个答案,我们需要在变量 public static WebDriver driver; 之前给出静态

相关问题