Selenium webdriver 运行代码时获取java.lang.NullPointerException 公共类TestMeetings扩展了基本页面{ 公共静态WebDriver管理员,参与者; 公共扩展TMLReporter htmlReporter; 公共延伸范围; 公共延伸试验; 文件src; FileInputStream objfile; 属性obj; 字符串url; 机器人r; 行动; @试验前 public void beforeTest_Admin()引发IOException、AWTException { htmlReporter=newextenthtmlreporter(“./reports/extent.html”); htmlReporter.config().setEncoding(“utf-8”); htmlReporter.config().setDocumentTitle(“自动化报告”); htmlReporter.config().setReportName(“自动化测试结果”); htmlReporter.config().setTheme(Theme.STANDARD); 区段=新的扩展端口(); extent.attachReporter(htmlReporter); 范围。设置系统信息(“自动化测试仪”,“XXXXX”); 范围。设置系统信息(“组织”、“XXXXX”); r=新机器人(); 动作=新动作(管理); src=新文件(“C:\\Users\\DELL\\eclipse workspace\\XxxxOnlineDemo\\Object\u Repo.properties”); objfile=新文件输入流(src); obj=新属性(); obj.load(objfile); Map prefs=新的HashMap(); prefs.put(“profile.default\u content\u setting\u values.notifications”,1); ChromeOptions选项=新的ChromeOptions(); options.addArguments(“--对媒体流使用假ui”); 选项。设置实验选项(“prefs”,prefs); System.setProperty(“webdriver.chrome.driver”,“E:\\drivers\\chromedriver.exe”); 管理员=新的ChromeDriver(选项); admin.manage().window().maximize(); } @试验前 测试前公开作废参与者() { System.out.println(“参与者测试运行前”); Map prefs1=新的HashMap(); prefs1.put(“profile.default\u content\u setting\u values.notifications”,1); ChromeOptions选项1=新的ChromeOptions(); 选项1.添加参数(“匿名”); 选项1.addArguments(“--对媒体流使用假ui”); 选项1.设置实验选项(“prefs”,prefs1); System.setProperty(“webdriver.chrome.driver”,“E:\\drivers\\chromedriver.exe”); 参与者=新的ChromeDriver(选项1); participant.manage().window().maximize(); } @后置法 公共无效拆卸(ITestResult结果){ if(result.getStatus()==ITestResult.FAILURE){ }else if(result.getStatus()==ITestResult.SKIP){ }else if(result.getStatus()==ITestResult.SUCCESS){ String methodName=result.getMethod().getMethodName(); 字符串logText=“+”测试用例:-“+methodName.toUpperCase()+”通过“+”; Markup m=markupulper.createLabel(logText,ExtentColor.GREEN); 试验通过(m); } } @测试(优先级=1) public void CreateRoomFrmBrowser()引发InterruptedException { test=extent.createTest(“创建房间”); 管理员获取(“https://xxx.xxxxx.com/"); test.info(“应用程序已启动”); admin.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); System.out.println(“导航到XXXXXXXX在线页面”); WebElement room_Name_field=admin.findElement(By.id(obj.getProperty(“txt_room_Name_field”)); 房间名称字段。清除(); 房间名称字段。发送键(“测试演示”); admin.findElement(By.id(obj.getProperty(“btn_Go”))。单击(); 测试通过(“成功创建房间”); 睡眠(3000); 字符串Copy_SharingLink=getElementText(admin,(By.xpath(obj.getProperty(“txt_sharing_link”)); System.out.println(“复制链接-”+复制共享链接); } @测试(优先级=2) public void JoinCallFrmParticipant()引发InterruptedException { test=extent.createTest(“复制Url”); participant.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); url=admin.getCurrentUrl(); System.out.println(“当前房间url:+url”); participant.get(url); 睡眠(3000); }

Selenium webdriver 运行代码时获取java.lang.NullPointerException 公共类TestMeetings扩展了基本页面{ 公共静态WebDriver管理员,参与者; 公共扩展TMLReporter htmlReporter; 公共延伸范围; 公共延伸试验; 文件src; FileInputStream objfile; 属性obj; 字符串url; 机器人r; 行动; @试验前 public void beforeTest_Admin()引发IOException、AWTException { htmlReporter=newextenthtmlreporter(“./reports/extent.html”); htmlReporter.config().setEncoding(“utf-8”); htmlReporter.config().setDocumentTitle(“自动化报告”); htmlReporter.config().setReportName(“自动化测试结果”); htmlReporter.config().setTheme(Theme.STANDARD); 区段=新的扩展端口(); extent.attachReporter(htmlReporter); 范围。设置系统信息(“自动化测试仪”,“XXXXX”); 范围。设置系统信息(“组织”、“XXXXX”); r=新机器人(); 动作=新动作(管理); src=新文件(“C:\\Users\\DELL\\eclipse workspace\\XxxxOnlineDemo\\Object\u Repo.properties”); objfile=新文件输入流(src); obj=新属性(); obj.load(objfile); Map prefs=新的HashMap(); prefs.put(“profile.default\u content\u setting\u values.notifications”,1); ChromeOptions选项=新的ChromeOptions(); options.addArguments(“--对媒体流使用假ui”); 选项。设置实验选项(“prefs”,prefs); System.setProperty(“webdriver.chrome.driver”,“E:\\drivers\\chromedriver.exe”); 管理员=新的ChromeDriver(选项); admin.manage().window().maximize(); } @试验前 测试前公开作废参与者() { System.out.println(“参与者测试运行前”); Map prefs1=新的HashMap(); prefs1.put(“profile.default\u content\u setting\u values.notifications”,1); ChromeOptions选项1=新的ChromeOptions(); 选项1.添加参数(“匿名”); 选项1.addArguments(“--对媒体流使用假ui”); 选项1.设置实验选项(“prefs”,prefs1); System.setProperty(“webdriver.chrome.driver”,“E:\\drivers\\chromedriver.exe”); 参与者=新的ChromeDriver(选项1); participant.manage().window().maximize(); } @后置法 公共无效拆卸(ITestResult结果){ if(result.getStatus()==ITestResult.FAILURE){ }else if(result.getStatus()==ITestResult.SKIP){ }else if(result.getStatus()==ITestResult.SUCCESS){ String methodName=result.getMethod().getMethodName(); 字符串logText=“+”测试用例:-“+methodName.toUpperCase()+”通过“+”; Markup m=markupulper.createLabel(logText,ExtentColor.GREEN); 试验通过(m); } } @测试(优先级=1) public void CreateRoomFrmBrowser()引发InterruptedException { test=extent.createTest(“创建房间”); 管理员获取(“https://xxx.xxxxx.com/"); test.info(“应用程序已启动”); admin.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); System.out.println(“导航到XXXXXXXX在线页面”); WebElement room_Name_field=admin.findElement(By.id(obj.getProperty(“txt_room_Name_field”)); 房间名称字段。清除(); 房间名称字段。发送键(“测试演示”); admin.findElement(By.id(obj.getProperty(“btn_Go”))。单击(); 测试通过(“成功创建房间”); 睡眠(3000); 字符串Copy_SharingLink=getElementText(admin,(By.xpath(obj.getProperty(“txt_sharing_link”)); System.out.println(“复制链接-”+复制共享链接); } @测试(优先级=2) public void JoinCallFrmParticipant()引发InterruptedException { test=extent.createTest(“复制Url”); participant.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); url=admin.getCurrentUrl(); System.out.println(“当前房间url:+url”); participant.get(url); 睡眠(3000); },selenium-webdriver,nullpointerexception,testng,multiple-instances,selenium-extent-report,Selenium Webdriver,Nullpointerexception,Testng,Multiple Instances,Selenium Extent Report,我在代码中创建了两个webdriver实例,因为我必须加入来自两个浏览器(chrome、incognito)的调用。除此之外,我还有一个基本页面,我在其中编写了类和定位器存储库。以前它工作正常,不知道在我尝试运行代码时突然发生了什么,它抛出了java.lang.NullPointerException。请看一看,让我知道哪里出了问题,提前谢谢 public class TestMeetings extends Base_Page{ public static WebDriver admin,

我在代码中创建了两个webdriver实例,因为我必须加入来自两个浏览器(chrome、incognito)的调用。除此之外,我还有一个基本页面,我在其中编写了类和定位器存储库。以前它工作正常,不知道在我尝试运行代码时突然发生了什么,它抛出了java.lang.NullPointerException。请看一看,让我知道哪里出了问题,提前谢谢

public class TestMeetings extends Base_Page{

public static WebDriver admin, participant;
public ExtentHtmlReporter htmlReporter;
public ExtentReports extent;
public ExtentTest test;
File src;
FileInputStream objfile ;
Properties obj;
String url;
Robot r;
Actions action;

@BeforeTest
public void beforeTest_Admin() throws IOException, AWTException
{
    
    htmlReporter = new ExtentHtmlReporter("./reports/extent.html");
    htmlReporter.config().setEncoding("utf-8");
    htmlReporter.config().setDocumentTitle("Automation Report");
    htmlReporter.config().setReportName("Automation Test Results");
    htmlReporter.config().setTheme(Theme.STANDARD);
    
    extent = new ExtentReports();
    extent.attachReporter(htmlReporter);
    
    extent.setSystemInfo("Automation Tester","XXXXX");
    extent.setSystemInfo("Organization","XXXXX");
            
    r = new Robot();
    action = new Actions(admin);
    src = new File("C:\\Users\\DELL\\eclipse-workspace\\XxxxOnlineDemo\\Object_Repo.properties");                    
    objfile = new FileInputStream(src);
    obj = new Properties();
    obj.load(objfile);
    
    Map prefs = new HashMap();
    prefs.put("profile.default_content_setting_values.notifications", 1);
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--use-fake-ui-for-media-stream");
    options.setExperimentalOption("prefs", prefs);
    System.setProperty("webdriver.chrome.driver", "E:\\drivers\\chromedriver.exe");
    admin = new ChromeDriver(options);
    admin.manage().window().maximize();

}

@BeforeTest
public void beforeTest_participant()
{
    System.out.println("before test of participant is running");
    
    Map prefs1 = new HashMap();
    prefs1.put("profile.default_content_setting_values.notifications", 1);
    ChromeOptions options1 = new ChromeOptions();
    options1.addArguments("incognito");
    options1.addArguments("--use-fake-ui-for-media-stream");
    options1.setExperimentalOption("prefs", prefs1);
    System.setProperty("webdriver.chrome.driver", "E:\\drivers\\chromedriver.exe");
    participant = new ChromeDriver(options1);
    participant.manage().window().maximize();
    
}

@AfterMethod
public void tearDown(ITestResult result) {
    
    if(result.getStatus() == ITestResult.FAILURE) {
        
    } else if(result.getStatus() == ITestResult.SKIP) {
        
    } else if(result.getStatus() == ITestResult.SUCCESS) {
        
        String methodName = result.getMethod().getMethodName();
        String logText = "<b>" + "TEST CASE: - "+methodName.toUpperCase()+" PASSED"+ "</b>"; 
        
        Markup m = MarkupHelper.createLabel(logText, ExtentColor.GREEN);
        test.pass(m);
    }
}
@Test(priority=1)
public void CreateRoomFrmBrowser() throws InterruptedException 
{
    test = extent.createTest("Create Room");
    admin.get("https://xxx.xxxxx.com/");
    test.info("Application started");
    admin.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    System.out.println("Navigated to XXXXxxxonline page");
    WebElement room_Name_field = admin.findElement(By.id(obj.getProperty("txt_room_name_field")));
    room_Name_field.clear();
    room_Name_field.sendKeys("TestDemo");
    admin.findElement(By.id(obj.getProperty("btn_Go"))).click();
    test.pass("Created the room successfully");
    Thread.sleep(3000); 
    String Copy_SharingLink = getElementText(admin, (By.xpath(obj.getProperty("txt_share_link"))));
    System.out.println("Copied link - " + Copy_SharingLink);
    
}

@Test(priority = 2)
public void JoinCallFrmParticipant() throws InterruptedException 
{
    test = extent.createTest("Copy Url");
    
participant.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
url = admin.getCurrentUrl();
System.out.println("Current room url : " + url);
participant.get(url);
Thread.sleep(3000);

}
在将
admin
实例作为
Actions()
的参数传递之前,
admin
必须初始化。此时,它将抛出NPE

action = new Actions(admin);

//some code

admin = new ChromeDriver(options);
admin.manage().window().maximize();

异常具体在哪里抛出?
admin = new ChromeDriver(options);
admin.manage().window().maximize();

action = new Actions(admin);

//some code