一个框架截图很重要,在出错的时候除了查看log外,还有就是查看截图。
selenium的API就有截图的功能:TakeScreenshot。当然Appium用selenium的api也适用。
import java.io.File;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
public class ScreenShot { public WebDriver driver; //初始化driver public ScreenShot(WebDriver driver) { this.driver = driver; } private void takeScreenshot(String screenPath) { try { File scrFile = ((TakesScreenshot) driver) .getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, new File(screenPath)); } catch (IOException e) { System.out.println("Screen shot error: " + screenPath); } } //截图到指定的路径 public void takeScreenshot() { String screenName = String.valueOf(new Date().getTime()) + ".jpg"; File dir = new File("test-output/snapshot"); if (!dir.exists()) dir.mkdirs(); String screenPath = dir.getAbsolutePath() + "/" + screenName; this.takeScreenshot(screenPath); }}
在具体的测试用例里面调用:
ScreenShot screenshot=new ScreenShot(driver);
screenshot.takeScreenshot();