Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Resolved] Скриншоты отдельных частей страницы

screenshot
Теги: #<Tag:0x00007f7b625d7728>

(Olga Kozlova) #1

Ребята, а есть ли хорошая какая-нибудь библиотека, чтобы работать со страницами, где нет JQuery вообще? Очень расстроилась, когда поняла, что aShot не будет на нашем проекте работать (((

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


[Resolved] И снова про Ashot и Allure
(Александр Шиповалов) #2

Вообще вроде последний релиз Ashot избавился от обязательного наличия JQuert на странице
1.4.12


(Olga Kozlova) #3

У меня 1.4.12, только сегодня ставила, и все валится)

   <dependency>
        <groupId>ru.yandex.qatools.ashot</groupId>
        <artifactId>ashot</artifactId>
        <version>1.4.12</version>
    </dependency>

Точнее, не совсем все, целиком страницу он прекрасно скриншотит. А вот при передаче веб-элемента для скриншота - валится.


(Александр Шиповалов) #4

А как именно валится? С какой ошибкой?


(Olga Kozlova) #5

С той же:
org.openqa.selenium.WebDriverException: unknown error: $ is not defined
(Session info: chrome=42.0.2311.152)
(Driver info: chromedriver=2.15.322448 (52179c1b310fec1797c81ea9a20326839860b7d3),platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 52 milliseconds
Build info: version: ‘2.45.0’, revision: ‘5017cb8e7ca8e37638dc3091b2440b90a1d8686f’, time: ‘2015-02-27 09:10:26’
System info: host: ‘KOZLOVA7’, ip: ‘192.168.2.87’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.8.0_20’
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, chrome={userDataDir=C:\Users\OLGAKO~1\AppData\Local\Temp\scoped_dir12012_23215}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=42.0.2311.152, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: b96f25cb478b9cb1e2fe002f27615336
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)
at ru.yandex.qatools.ashot.util.JsCoords.findCoordsWithJquery(JsCoords.java:26)
at ru.yandex.qatools.ashot.coordinates.JqueryCoordsProvider.ofElement(JqueryCoordsProvider.java:13)
at ru.yandex.qatools.ashot.coordinates.CoordsProvider.ofElements(CoordsProvider.java:21)
at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:138)
at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:155)
at utils.ScreenShotMaker.ScreenShotMaker.makeScreenShotOfElement(ScreenShotMaker.java:37)
at Pages.BaseClasses.BaseScreen.BaseHelper.makeScreenShotOfElement(BaseHelper.java:35)
at Pages.SlidingBar.WeightGainCalc.WeightCainCalcScreen.WGCTestMethods.clickCarryingLink(WGCTestMethods.java:22)
at ScrollingBarTests.WGCTests.WGCTestSuite0.clickingCarryingLink(WGCTestSuite0.java:19)


(Александр Шиповалов) #6

Странно, а можно метод который вы используете?


(Olga Kozlova) #7

Конечно.

public static File makeScreenShotOfElement(WebDriver driver, WebElement element, String pathName) {

    Screenshot shot = new AShot().takeScreenshot(driver, element);

    String path = pathName + ".png";
    File outputFile = new File(path);
    try {
        ImageIO.write(shot.getImage(), "png", outputFile);
    }
    catch (IOException e){e.printStackTrace();}
    return new File(path);
}

Тут корявенько пока, только настраиваю…


(Olga Kozlova) #8

Вот спасибо, добрый человек! Я нашла ошибку!
На сайте же черным по белому написано, какой метод использовать!

Screenshot shot = new AShot()
            .coordsProvider(new WebDriverCoordsProvider()) //find coordinates with WebDriver API
            .takeScreenshot(driver, element);

Очень вам признательна! Хороший вопрос - половина правильного ответа!))