尝试在 Selenium 中截屏时获取 NPE Java
Getting NPE while trying to make screenshot in Selenium Java
我尝试了各种方法,但仍然获得 NPE。请参阅下面的代码片段。
TestBase.class
public WebDriver initializeDriver() { // nothing special }
public void takeScreenshot(String testResult) {
try {
File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshotFile, new File(
"//Users//roman//Desktop//MainProject//SeleniumJava//ScreenshotsFailure//"
+ testResult + "_" + "screenshot.png"));
//
// System.getProperty("user.dir")
log.info("Screenshot of " + testResult + "'s failure has been created successfully");
} catch (IOException e) {
e.printStackTrace();
log.error("Screenshot of " + testResult + "'s failure has not been created");
}
}
Listeners.class
public class Listeners implements ITestListener {
TestBase testBase = new TestBase();
Date currentDate;
@Override
public void onTestFailure(ITestResult iTestResult) {
currentDate = new Date();
testBase.takeScreenshot(iTestResult.getName() + "_" + currentDate.getTime());
}
HomePageTest.class
@Test
void my() {
Assert.assertEquals(driver.getTitle(), "adb");
// intentionally cause False to take a screenshot of this failure
}
所以 NPE 发生是这两行:
File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
和
testBase.takeScreenshot(iTestResult.getName() + "_" + currentDate.getTime());
如何解决这个问题?
非常感谢!
NPE 不能出现在两行中。总是只有一行抛出异常。打印并显示异常的堆栈跟踪。
我假设 driver
和 iTestResult
或 currentDate
为空,无论出于何种原因。您可以插入一条日志消息以在使用它们之前打印出它们的值。
你也可以插入换行符,然后堆栈跟踪会准确地告诉你哪一部分有空指针:
testBase.takeScreenshot(
iTestResult.getName() + "_" +
currentDate.getTime());
我尝试了各种方法,但仍然获得 NPE。请参阅下面的代码片段。
TestBase.class
public WebDriver initializeDriver() { // nothing special }
public void takeScreenshot(String testResult) {
try {
File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshotFile, new File(
"//Users//roman//Desktop//MainProject//SeleniumJava//ScreenshotsFailure//"
+ testResult + "_" + "screenshot.png"));
//
// System.getProperty("user.dir")
log.info("Screenshot of " + testResult + "'s failure has been created successfully");
} catch (IOException e) {
e.printStackTrace();
log.error("Screenshot of " + testResult + "'s failure has not been created");
}
}
Listeners.class
public class Listeners implements ITestListener {
TestBase testBase = new TestBase();
Date currentDate;
@Override
public void onTestFailure(ITestResult iTestResult) {
currentDate = new Date();
testBase.takeScreenshot(iTestResult.getName() + "_" + currentDate.getTime());
}
HomePageTest.class
@Test
void my() {
Assert.assertEquals(driver.getTitle(), "adb");
// intentionally cause False to take a screenshot of this failure
}
所以 NPE 发生是这两行:
File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
和
testBase.takeScreenshot(iTestResult.getName() + "_" + currentDate.getTime());
如何解决这个问题? 非常感谢!
NPE 不能出现在两行中。总是只有一行抛出异常。打印并显示异常的堆栈跟踪。
我假设 driver
和 iTestResult
或 currentDate
为空,无论出于何种原因。您可以插入一条日志消息以在使用它们之前打印出它们的值。
你也可以插入换行符,然后堆栈跟踪会准确地告诉你哪一部分有空指针:
testBase.takeScreenshot(
iTestResult.getName() + "_" +
currentDate.getTime());