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