Selenium с Java: Скриншоты с AShot обрезаются при запуске с некоторых устройств

Я создал проект Maven/Java для автоматизации тестирования QA веб-приложения. Я использую Selenium, JUnit и кучу других зависимостей, таких как AShot, которые я использую для создания скриншотов.

Я разработал проект на своем домашнем компьютере (13-дюймовый MacBook Pro 2013 г.), и все было хорошо, когда я запускал проект, скриншоты выглядели нормально.

Однако, когда я загрузил проект на свой рабочий компьютер (13-дюймовый MacBook Pro 2017 года), у меня начали вырезаться скриншоты. Я бы на скринах видел только половину экрана. Очень странно. Для справки, вот как выглядит вырезанный скриншот:

скриншот разрезанный пополам

Я попытался установить размеры и получить их в разных точках теста, чтобы увидеть, работают ли они. Единственная разница заключалась в том, что перед фактическим скриншотом у меня было больше белого.

В прошлом у меня была похожая проблема с этим же компьютером, но я исправил ее, указав фиксированные размеры экрана. Единственное отличие от того времени, когда я тестировал тогда, заключается в том, что в то время у меня не было настроено второго экрана.

Я протестировал проект на компьютерах друзей, и там он тоже работал корректно, скриншоты не выглядели обрезанными.

В тот момент я подумал, не связано ли это с различиями в наших установках, а именно:

  • мне без проблем: 13-дюймовый MacBook Pro 2013 года (работает с 32-дюймовым вторым экраном и без него)
  • я с проблемой: 13-дюймовый MacBook Pro 2017 года (работает с 32-дюймовым вторым экраном и без него)
  • первый друг (без проблем): 13-дюймовый MacBook Pro 2019 года, 27-дюймовый экран с зеркальным расположением дисплеев
  • второй друг (без проблем): 16-дюймовый MacBook Pro и работающий с 32-дюймовым вторым экраном.

Я подумал, что это может быть расположение зеркальных дисплеев, и когда я сделал это на компьютере, где у меня была проблема, скриншоты снова выглядели нормально.

Тем не менее, я до сих пор не знаю, почему (так как мой второй друг не использовал расположение зеркальных дисплеев) и, что более важно, как мне избежать этого в будущем, когда я, вероятно, не буду иметь власти над настройками, где мой проект работает?

Может кто-нибудь помочь мне? Я нигде не нашел информации по этому вопросу.

Заранее спасибо и, пожалуйста, дайте мне знать, если вам нужно больше (или меньше) информации.

Заранее спасибо!


person AnaPM    schedule 01.09.2020    source источник
comment
Это около .shootingStrategy(). Я использую его таким образом Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(2000)).takeScreenshot(driver); BufferedImage image = screenshot.getImage(); без каких-либо проблем.   -  person pburgr    schedule 03.09.2020
comment
Эй, прежде всего, спасибо за ваш ответ! Мой код сейчас таков: AShot fullScreenshot = new AShot(); BufferedImage img = fullScreenshot.shootingStrategy(ShootingStrategies.viewportPasting(100)).takeScreenshot(driver).getImage(); Вы имеете в виду, что я должен изменить 100 на 2000? Спасибо еще раз!   -  person AnaPM    schedule 03.09.2020
comment
Да, это именно так. Скриншоты по-прежнему будут разными bcs с разным «соотношением пикселей устройства». С увеличением viewportPasting вы сможете захватить большую часть страницы. При значении 2000 он должен захватывать всю страницу на всех устройствах с «обычным» соотношением пикселей.   -  person pburgr    schedule 04.09.2020
comment
Привет еще раз, я изменил его на 2000, но с той же настройкой (второй экран и экран моего рабочего компьютера) скриншоты продолжают обрезаться :(   -  person AnaPM    schedule 04.09.2020
comment
Проверьте метаинформацию веб-страницы. Возможно, вам придется переопределить его -› stackoverflow. ком/вопросы/24209628/   -  person pburgr    schedule 07.09.2020