t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f74886898c8>

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

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

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

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

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

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

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

С той же:
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)

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

Конечно.

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);
}

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

1 Симпатия

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

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

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