任何人都可以告诉我AndroidDriver的屏幕截图捕获代码应该是什么。我使用下面的代码,我得到突出显示的行的Java空指针异常。
Driver是一个AndroidDriver驱动程序;这扩展到了这门课程。
public void onTestFailure(ITestResult result) {
// TODO Auto-generated method stub
if(!result.isSuccess()){
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
String methodName = result.getName();
****File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);****
try {
String reportDirectory = new File(System.getProperty("user.dir")).getAbsolutePath() + "\\src\\test\\java\\com\\automation\\mobile\\app\\android\\";
File destFile = new File((String) reportDirectory + "/failure_screenshots/" + methodName + "_" + formater.format(calendar.getTime()) + ".png");
FileUtils.copyFile(scrFile, destFile);
Reporter.log("<a href='" + destFile.getAbsolutePath() + "'> <img src='" + destFile.getAbsolutePath() + "' height='100' width='100'/> </a>");
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
假设你创建了这样的驱动程序:
AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
您可以创建一个屏幕截图:
File srcFile = driver.getScreenshotAs(OutputType.FILE);
String filename = UUID.randomUUID().toString();
File targetFile = new File(System.getProperty("user.dir") + "/screenshots/" + filename + ".jpg");
try {
FileUtils.copyFile(srcFile, targetFile);
} catch (IOException e) {
e.printStackTrace();
}
在制作屏幕截图之前,请确保您的司机会话仍然有效 - &gt;检查appium服务器日志,你可能得到500,然后它无法截取屏幕
在 appium 1.8 和 java-client 6.0.0-BETA5
上进行测试答案 1 :(得分:0)
这是C#中的一个简单解决方案。翻译成Java不应该太复杂
此处,screenshotName是您希望文件具有的名称,而驱动程序是您驾驶appium的驱动程序实例。
public void GetScreenshot(IWebDriver driver, string screenshotName)
{
ITakesScreenshot ts = (ITakesScreenshot) driver;
var screenshot = ts.GetScreenshot();
var screenshotPath = @"C:\temp\" + screenshotName +".bmp";
screenshot.SaveAsFile(screenshotPath);
}
希望这有帮助!