首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过listeners类捕获屏幕截图

无法通过listeners类捕获屏幕截图
EN

Stack Overflow用户
提问于 2019-11-14 21:10:33
回答 1查看 9关注 0票数 0

我试图在测试失败时截取屏幕,但它给出了空指针异常,请检查我的整个代码并帮助。我使用一个主类,其中有一个截图方法,一个侦听器类和testng.XML文件来运行侦听器。请帮我解决这个问题。

代码语言:javascript
复制
 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;
        }

    }
EN

回答 1

Stack Overflow用户

发布于 2019-11-14 21:11:36

下面是Listener类:

打包资源;

代码语言:javascript
复制
mport java.io.IOException;

import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import framework.SafeLaunch;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;


public class Listeners implements ITestListener {


    public void onTestStart(ITestResult result) {
        // TODO Auto-generated method stub

    }

    public void onTestSuccess(ITestResult result) {
        // TODO Auto-generated method stub

    }

    public  void onTestFailure(ITestResult result) {

        String s = result.getName();

        try {
            SafeLaunch.getScreenshot(s);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

    public void onTestSkipped(ITestResult result) {
        // TODO Auto-generated method stub

    }

    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
        // TODO Auto-generated method stub

    }

    public void onStart(ITestContext context) {
        // TODO Auto-generated method stub

    }

    public void onFinish(ITestContext context) {
        // TODO Auto-generated method stub

    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58857607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档