我正在尝试测试失败时进行屏幕截图,但它给出了空指针异常,请检查我的整个代码和帮助。 我使用的是其中存在屏幕截图方法的一个主要类,一个侦听器类以及一个testng.XML文件来运行侦听器。 请一些帮助我。
package framework;
public class SafeLaunch extends ExtentReportCreation {
public static AndroidDriver<AndroidElement> driver;
public static AppiumDriverLocalService service;
public AppiumDriverLocalService startServer() {
boolean flag = checkIfServerIsRunning(4723);
if (!flag) {
service = AppiumDriverLocalService.buildDefaultService();
service.start();
}
return service;
}
public AndroidDriver<AndroidElement> capabilities() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
// File appDir = new File("src");
// File app = new File(appDir,"app-staging-debug.apk");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"4200f532f00d4400");
// capabilities.setCapability(MobileCapabilityType.APP,app.getabsolutePath());
capabilities.setCapability("appPackage","versionx.safeChild");
capabilities.setCapability("appactivity","versionx.safeChild.SplashScreenactivity");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"uiAutomator2");
capabilities.setCapability("newCommandTimeout",100000);
capabilities.setCapability("--session-override",true);
capabilities.setCapability(MobileCapabilityType.NO_RESET,true);
driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
return driver;
}
public static void getScreenshot(String s) throws IOException {
File srcfile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
//FileUtils.copyFile(srcfile,new File("C:\\Users\\Developer\\eclipse-workspace\\SafeChildAutomate\\screenshots\\" + s + ".png"));
FileHandler.copy(srcfile,new File("C:\\Users\\Developer\\eclipse-workspace\\SafeChildAutomate\\screenshots\\" + s + ".png"));
}
public static boolean checkIfServerIsRunning(int port) {
boolean IsServerRunning = false;
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(port);
serverSocket.close();
} catch (IOException e) {
IsServerRunning = true;
} finally {
`serverSocket` = null;
}
return IsServerRunning;
}
}