selenium2 で iPhoneのスクリーンショットを撮る
以前は普通にスクリーンショットをとれていたのですが
selenium2.16.0あたりから撮れないようになってます。
どうも、スクリーンショットをとる関数の返り値の型がかわっているようなのです。
で、比較してみる。
★InternetExplorerDriver.java
public
// Get the screenshot as base64.
String base64 = execute(DriverCommand.SCREENSHOT).getValue().toString();
// There's a bug in some versions of IE where images are returned as
// being completely black. We're not sure _why_, but try and work
// around this.
// BufferedImage image = ImageIO.read(new ByteArrayInputStream(
// OutputType.BYTES.convertFromBase64Png(base64)));
// int width = image.getWidth();
// int height = image.getHeight();
// int rgb = new int[width * height];
// image.getRGB(0, 0, width, height, rgb, 0, width);
// boolean allBlack = true;
// for (int i = 0; i < (width * height) && allBlack; i++) {
// allBlack &= rgb[i] == 0;
// }
// if (allBlack) {
// base64 = execute(DriverCommand.SCREENSHOT).getValue().toString();
// }
// ... and convert it.
return target.convertFromBase64Png(base64);
}
★FirefoxDriver.java
public
// Get the screenshot as base64.
String base64 = execute(DriverCommand.SCREENSHOT).getValue().toString();
// ... and convert it.
return target.convertFromBase64Png(base64);
}
★AndroidDriver.java
public
String base64Png = execute(DriverCommand.SCREENSHOT).getValue().toString();
return target.convertFromBase64Png(base64Png);
}
★ChromeDriver.java
public
// Get the screenshot as base64.
String base64 = (String) execute(DriverCommand.SCREENSHOT).getValue();
// ... and convert it.
return target.convertFromBase64Png(base64);
}
あれ?これもちょっと違うが、chromeはほかと動作環境も違うので特別?
で、iPhoneは
★IphoneDriver.java
public
byte base64Png = (byte[]) execute(DriverCommand.SCREENSHOT).getValue();
String png = new String(base64Png);
// ... and convert it.
return target.convertFromBase64Png(png);
}
微妙に違う・・・・