java - 如何初始化驱动程序以避免 NullPointerException 错误

标签 java eclipse selenium testng

我在使用此类时遇到问题,收到空指针异常。我插入System.out.println("driver=" + driver);查看输出内容,它指出 driver=null对于每个数据集,当我点击@Test下的方法时,这让我认为初始化存在问题。如何解决驱动程序的初始化以使我的测试在 testNG 中通过?

下面是代码:

package com.testng.practice;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

    public class LoginTest {

        WebDriver driver = null;

        @BeforeTest
        public void invokeApplication() {
            System.setProperty("webdriver.chrome.driver", "xxx\\chromedriver.exe");
            WebDriver driver = new ChromeDriver(); 
            driver.manage().window().maximize();
            driver.get("https://www.facebook.com");
        }   

        @Test (dataProvider = "getData")
        public void loginFaceBook(String email, String password) {

            System.out.println("driver=" + driver); 

            WebElement emailField = driver.findElement(By.name("email"));
            WebElement passwordField = driver.findElement(By.name("pass"));

            emailField.sendKeys(email);
            passwordField.sendKeys(password);

            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        @DataProvider
        public Object[][] getData(){

            //declared object of 4 rows and 2 columns

            Object[][] dataSet = new Object[4][2];

            dataSet[0][0] = "TimSmith@gmail.com";
            dataSet[0][1] = "Smith123";

            dataSet[1][0] = "JaneMcCormack@gmail.com";
            dataSet[1][1] = "McCormack123";

            dataSet[2][0] = "AnjaliPrakash@gmail.com";
            dataSet[2][1] = "Prakash123";

            dataSet[3][0] = "JamesBean@gmail.com";
            dataSet[3][1] = "Bean123";

            return dataSet;

        }
    }

最佳答案

driver 变量的定义在 invokeApplication() 方法中有效,并且使类属性 driver 未初始化

WebDriver 驱动程序 = new ChromeDriver();

初始化类属性使用:

this.driver = new ChromeDriver();

关于java - 如何初始化驱动程序以避免 NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50125111/

相关文章:

java - 在方法名称中发现无效字符。 HTTP 方法必须是 token

eclipse - 由于 OSGI BundleException,GWT 插件无法在使用 JDK 11 或 17 的 Eclipse 2022-03 中加载

java - 没有互联网连接时应用程序崩溃

ruby - 使用 watir-webdriver 打开多个线程导致 'Connection refused' 错误

php - 为什么 Selenium 表单提交返回时缺少所有字段?

api - 考虑 Policy.getPolicy() 的原因是什么,因为它将保留对上下文的静态引用并可能导致内存泄漏

java - Android Studio 项目无法正确编译

android - Maven Eclipse 插件不会将 Android support-v4 添加到构建路径

java - 如何为selenium java代码添加循环条件

java - Dropwizard Rest API 端点操作