Ich möchte einige Screenshots meiner Hybrid-App für iTunes automatisch verbinden. Ich benutze Ubuntu 14.04. chromedriver 2.15.322448Wie man Retina Screenshots mit Xvfb und Selenium macht
Mit Selenium und Xvfb lassen sich Screenshots automatisch erstellen. Aber es ist nicht einfach, Retina-Screenshots zu bekommen.
begann ich meine Xvfb mit einem höheren dpi:
/usr/bin/Xvfb :99 -screen 0 2000x2000x24 -dpi 200
Wenn ich die Anzeigeinformationen überprüfen alles scheint richtig zu sein:
xdpyinfo -display :99
...
screen #0:
dimensions: 2000x2000 pixels (254x254 millimeters)
resolution: 200x200 dots per inch
depths (6): 24, 1, 4, 8, 16, 32
...
ich meine chromedriver Dann starten wie folgt
private WebDriver getChromeDriver (Phone phone)
{
Map<String, Object> deviceMetrics = new HashMap<String, Object>();
deviceMetrics.put("width", 320);
deviceMetrics.put("height", 460);
deviceMetrics.put("pixelRatio", 2);
Map<String, Object> mobileEmulation = new HashMap<String, Object>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "iphone4");
ChromeDriverService cds = new ChromeDriverService.Builder().withEnvironment(ImmutableMap.of("DISPLAY", ":99")).build();
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
WebDriver driver = new ChromeDriver(cds, capabilities);
return driver;
}
und nach einigen anderen langweiligen Code, nehme ich den Screenshot:
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
Dies funktioniert nicht. Der Screenshot ist in normalen dpi. Das Bild der Website ist also nur 320x460 und nicht 640x960, wie es sein sollte.
stelle ich einen Haltepunkt kurz vor dem Screenshot gemacht und schüttete den Framebuffer wie folgt aus:
export DISPLAY=:99
xwd -root -silent | xwdtopnm |pnmtojpeg > screen.jpg
Wie Sie in der Titelleiste sehen in Bezug auf höhere dpi, aber der Rest gemacht wird des Browserfensters nicht.
Also wie kann ich einen Chrom-Treiber mit mehr dpi laufen lassen, um Retina-Screenshots zu machen? Ist es möglich?
Haben Sie eine Lösung gefunden?Ich bin bei genau dem gleichen Problem stecken, würde es begrüßen, wenn Sie Ihre Erfahrung mit xvfb und Retina Auflösung Screenshots – Alex
Ich habe eine Antwort unten gepostet. Ich hoffe, es hilft. – Janning