Однако возникло две проблемы которые я пока никак не могу решить. Данные методы находятся у меня в родительском классе для Pages. Но вызывая в наследниках метод captureScreenShot() я всегда получаю в Allure скриншоты с одинаковым именем PNG Attachment {0}. Причем счетчик не срабатывает. Всегда 0. Если какой то способ изменить имена - оставив определение метода в родительском классе. Или для этого каждый раз когда требуется создать скриншот необходимо будет писать новый метод - и выносить в аннотацию его имя.
Второй вопрос связан с Ashot - возможно ли как сделать так, что бы он снимал скриншоты одинаково во всех браузерах. На данный момент - в Firefox он снимает нормально, а вот в Chrome снимает видимую область экрана а затем несколько раз копирует ее и растягивает таким образом скриншот до полной длины экрана.
{0} - это обращение к первому параметру метода. Если бы он у вас
был - то вывелось бы его значение.toString(). То есть вашем случае
{0} не подменяется, так как ваш метод без параметров. Разумеется, по
аналогии можно обращаться ко всем параметрам по индексу(индекс
начинается, как видим, с 0). При этом разумеется все будет отлично
работать и для примитивов. Попробуйте добавить параметр и что
нибудь в него передать - и увидите результат. По аналогии работает и
аннотация @Step
снятие только видимой области в хроме - это баг
chromedriver. Известный. Ашот в свою очередь(по утверждению автора,
как раз сегодня он мне об этом говорил) пытается обойти это через
снятие куска, скроллинг, снятие другого куска и потом слепливания
этих всех частей. Насколько он это корректно делает - я не знаю(и не
очень понял - он верно это сделал у вас?).
Да, можно попробовать так. Я в некоторых тестах специально вводил параметр именно для лога.
По поводу ошибки - кажется это как то связано с jquery. Он у вас на странице подключен?
Ну или по крайней мере можно поглядеть, откуда ошибка идет и посмотреть исходники.
Да нет…подобная ошибка сопровождается подобный стектрейсом
org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)
at ru.yandex.qatools.ashot.screentaker.ViewportPastingStrategy.getFullHeight(ViewportPastingStrategy.java:23)
at ru.yandex.qatools.ashot.screentaker.VerticalPastingShootingStrategy.getScreenshot(VerticalPastingShootingStrategy.java:33)
at ru.yandex.qatools.ashot.screentaker.ScreenTaker.take(ScreenTaker.java:23)
at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:161)
at com.luxoft.classvac.wdtests.TestBase.captureScreenShot(TestBase.java:79)
at com.luxoft.classvac.wdtests.TestBase.createAttachment(TestBase.java:73)
Ну ошибка понятно, что из executeScript. Значит она, что не понимается $ внутри. Этот символ используется в jquery. В исходниках ашота можно увидеть, какая команда вызывается(там берется высота у документа).
На вашей тестируемой странице в head блоке подключен jquery?
Не хватит пока скилла, нормально реализовать листенер…и уж тем более не понятно как он будет отрабатывать в случае DDT тестов - как он их будет различать…как именовать…
Может быть…у меня там по идее есть страница ожидания при переходе со страницы на страницу…но странно, что иногда снимает, а иногда падает вот с такой вот ошибкой
Может быть действительно в некоторых случаях - оно не успевает подгрузиться? А есть способы в Ашоте - обойтись без jquery? Какой нибудь дедовский…что то мало информации по стратегиям Ашота.
Вообще я поговорю с разработчиком ашота, что лучше бы убрать jquery. Потому как не у одного у Вас могут возникнуть такие ошибки.
Можете сделать свою стратегию, отнаследовавшись от VerticalPastingShootingStrategy.
Вам нужно будет только переопределить методы забора длины и высоты экрана, вообщем сделать аналог ViewportPastingStrategy, только в executeScript не дергать jquery.
Если сделаете - можно будет и пул реквест направить может