简体   繁体   English

java.lang.NullPointerException 同时使用 Selenium TestNG 和 Java 执行第二个 @test 注释方法

[英]java.lang.NullPointerException while executing second @test annotated method using Selenium TestNG and Java

java.lang.NullPointerException while executing second @test annotated method using Selenium TestNG and Java java.lang.NullPointerException 同时使用 Selenium TestNG 和 Java 执行第二个 @test 注释方法

Code trial:代码试用:

public class Dropdown {
    WebDriver driver;

    @BeforeTest
    public void Lanchdriver()
    {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\admin\\Downloads\\chromedriver_win32\\chromedriver.exe");
        WebDriver driver =new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://www.suzukimotorcycle.co.in/find-dealer");
        WebElement dropdown1= driver.findElement(By.xpath("//*[@id='dealer_touch_points']"));
        dropdown1.click();
        Select select = new Select (dropdown1);
        select .selectByVisibleText("Suzuki Premium Dealers");
    }
    @Test(priority=1)
    public void select_dealer()
    {
        WebElement State_Dropdown =driver.findElement(By.id("dealer_state"));
        Select State_Select =new Select (State_Dropdown);
        State_Select.selectByValue("27");
    }
}

Error:错误:

FAILED: select_dealer java.lang.NullPointerException at myNewPackage.Dropdown.select_dealer(Dropdown.java:47)

You already have declared a global instance of WebDriver ie driver as in:您已经声明了WebDriver的全局实例,即driver如下所示:

WebDriver driver;

So you need not create any more method level instances of WebDriver and continue using the same instance of WebDriver with global scope ie driver .因此,您无需再创建WebDriver 的任何方法级实例,并继续使用具有全局作用域的WebDriver的相同实例,即driver


Solution解决方案

You need to remove the word WebDriver from the line WebDriver driver =new ChromeDriver();您需要从WebDriver driver =new ChromeDriver();行中删除WebDriver一词WebDriver driver =new ChromeDriver(); within select_dealer() method.select_dealer()方法中。 Hence, effectively your line of code will be:因此,实际上您的代码行将是:

driver = new ChromeDriver();

Update below line from beforeTest method从 beforeTest 方法更新下面的行

WebDriver driver =new ChromeDriver();

to

driver =new ChromeDriver();

because in your case scope will be limited to that BeforeMethod only.因为在您的情况下,范围将仅限于该 BeforeMethod 。 If you want to use same instance outside then declare at class level.如果您想在外部使用相同的实例,请在类级别声明。

in your case, after execute beforeMethod your driver value got null.在您的情况下,在执行 beforeMethod 之后,您的驱动程序值变为空。 that is why getting nullpointer in Test method.这就是为什么在 Test 方法中获得空指针的原因。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM