Unable to take a screenshot for a webelement by using Ashot in Katalon 5.6

Hello,

I’ve created a customkey for taking a webelement screenshot by using Ashot as below. But I’m getting the errors. Please help me, I want to take screen shots for elements and full page.

@Keyword

public void takeWebElementScreenshot(TestObject objectto) {

WebElement element = WebUiCommonHelper.findWebElement(objectto, 20)

WebDriver driver = DriverFactory.getWebDriver();

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

ImageIO.write(screenshot.getImage(), “PNG”, new File(System.getProperty(“user.dir”) +“\\Screenshots\\ElementScreenshot.PNG”));

}

Test case:

WebUI.openBrowser(GlobalVariable.G_GmailURL)

CustomKeywords.‘com.sgds.util.ScreenshotHelper.takeWebElementScreenshot’(findTestObject(‘Object Repository/Page_Gmail/gmail_logo’))

WebUI.delay(‘5’)

WebUI.click(findTestObject(‘Page_Gmail/gmail_SignIn_link’))

ERRORS:

Log viewer:

est Cases/Common Test Cases/Gmail_IE FAILED because (of) java.lang.RuntimeException: org.openqa.selenium.JavascriptException: ReferenceError: $ is not defined

Build info: version: ‘3.7.1’, revision: ‘8a0099a’, time: ‘2017-11-06T21:07:36.161Z’

System info: host: ‘SAF002316’, ip: ‘10.99.34.40’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.8.0_181’

Driver info: com.kms.katalon.core.webui.driver.firefox.CGeckoDriver

Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 62.0.2, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 2836, moz:profile: C:\Users\DT921155\AppData\L…, moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: XP, platformName: XP, platformVersion: 6.1, proxy: Proxy(system), rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}

Session ID: d925abde-70f1-43ee-9e0d-cc0d16476aaa

com.sgds.util.ScreenshotHelper.takeWebElementScreenshot:51

com.sgds.util.ScreenshotHelper.invokeMethod:0

Test Cases/Common Test Cases/Gmail_IE.run:31

Console logs:

11-28-2018 04:39:37 PM - [ERROR] - org.openqa.selenium.JavascriptException: ReferenceError: $ is not defined

Build info: version: ‘3.7.1’, revision: ‘8a0099a’, time: ‘2017-11-06T21:07:36.161Z’

System info: host: ‘SAF002316’, ip: ‘10.99.34.40’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.8.0_181’

Driver info: com.kms.katalon.core.webui.driver.firefox.CGeckoDriver

Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 62.0.2, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 2836, moz:profile: C:\Users\DT921155\AppData\L…, moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: XP, platformName: XP, platformVersion: 6.1, proxy: Proxy(system), rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}

Session ID: d925abde-70f1-43ee-9e0d-cc0d16476aaa

11-28-2018 04:39:37 PM - [ERROR] - Test Cases/Common Test Cases/Gmail_IE FAILED because (of) java.lang.RuntimeException: org.openqa.selenium.JavascriptException: ReferenceError: $ is not defined

Build info: version: ‘3.7.1’, revision: ‘8a0099a’, time: ‘2017-11-06T21:07:36.161Z’

System info: host: ‘SAF002316’, ip: ‘10.99.34.40’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.8.0_181’

Driver info: com.kms.katalon.core.webui.driver.firefox.CGeckoDriver

Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 62.0.2, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 2836, moz:profile: C:\Users\DT921155\AppData\L…, moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: XP, platformName: XP, platformVersion: 6.1, proxy: Proxy(system), rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}

Session ID: d925abde-70f1-43ee-9e0d-cc0d16476aaa

1 Like

The solution is here:

coordsProvider() is significant.

For example my implementation is as this:

static BufferedImage takeElementImage(WebDriver webDriver, WebElement webElement){    int timeout = 500    Screenshot screenshot = new AShot().        coordsProvider(new WebDriverCoordsProvider()).        shootingStrategy(ShootingStrategies.viewportPasting(timeout)).        takeScreenshot(webDriver, webElement)    return screenshot.getImage()}
1 Like