Я хочу сделать несколько скриншотов своего гибридного приложения для автоматического подключения iTunes. Я использую Ubuntu 14.04. хромдрайвер 2.15.322448
Делать скриншоты автоматически легко с Selenium и Xvfb. Но получить скриншоты retina непросто.
Я начал свой Xvfb с более высоким разрешением:
/usr/bin/Xvfb :99 -screen 0 2000x2000x24 -dpi 200
Когда я проверяю информацию об отображении, все кажется правильным:
xdpyinfo -display :99
...
screen #0:
dimensions: 2000x2000 pixels (254x254 millimeters)
resolution: 200x200 dots per inch
depths (6): 24, 1, 4, 8, 16, 32
...
Затем я запускаю свой хромированный драйвер следующим образом
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;
}
и после какого-то другого скучного кода делаю скриншот:
File srcFile = ( (TakesScreenshot) driver ).getScreenshotAs(OutputType.FILE);
Это не работает. Скриншот в обычном dpi. Таким образом, захваченное изображение веб-сайта имеет размер всего 320x460, а не 640x960, как должно быть.
Я установил точку останова непосредственно перед тем, как был сделан снимок экрана, и сбросил кадровый буфер следующим образом:
export DISPLAY=:99
xwd -root -silent | xwdtopnm |pnmtojpeg > screen.jpg
Как видите, строка заголовка отображается с учетом более высокого разрешения, а остальная часть окна браузера — нет.
Итак, как я могу запустить хромированный драйвер с большим количеством точек на дюйм, чтобы делать скриншоты сетчатки? Является ли это возможным?
--force-device-scale-factor=2
исправил это для меня, большое спасибо! 10.12.2019