[英]Ashot - Not able to take screenshot of particlular element in Chrome
When i use Ashot with selenium to capture screenshot for particular webelement,its not working.I have also attached the logs for reference. 当我使用带有硒的Ashot捕获特定Web元素的屏幕截图时,它无法正常工作。我还附上了日志,以供参考。
Screenshot for taking full page is working. 截屏的截图正在工作。
Note : I have updated the latest jar's as mention in comment 注意:我已经更新了最新的罐子,如评论中所述
Iam using Chrome Driver ,selenium 3.8.1 standalone jar, Ashot 1.5.2 jar. Iam使用Chrome驱动程序,硒3.8.1独立jar,Ashot 1.5.2 jar。
@Test
public void launchBrowser()
{
System.setProperty("webdriver.chrome.driver","/Applications/webdriver/chromedriver");
driver = new ChromeDriver();
}
@Test
public void openApplication() throws IOException, InterruptedException
{
driver.get("https://myurl");
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 50);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("commonuileftpanel")));
WebElement portal =driver.findElement(By.id("commonuileftpanel"));
Screenshot myScreenshot = new AShot().takeScreenshot(driver,portal);
BufferedImage original = myScreenshot.getImage();
BufferedImage expected = ImageIO.read(new File("/Applications/webdriver/results.png"));
ImageDiff diff = new ImageDiffer().makeDiff(original, expected);
BufferedImage difffullImage = diff.getMarkedImage();
File outputfile = new File("/Applications/webdriver/diffImage.png");
ImageIO.write(difffullImage, "PNG", outputfile);
Boolean diffval = diff.hasDiff();
Assert.assertFalse(diffval);
driver.quit();
} }
@Test
public void closeDriver()
{
if(driver!=null)
{
driver.close();
}
Error Message : 错误信息 :
Starting ChromeDriver 2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e) on port 3753
Only local connections are allowed.
Jan 12, 2018 4:02:52 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
ChromeDriver: chrome on MAC (d1a7d84c06ae31e76c872e6be1a61824)
PASSED: closeDriver
PASSED: launchBrowser
FAILED: openApplication
org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'offset' of null
(Session info: chrome=63.0.3239.132)
(Driver info: chromedriver=2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),platform=Mac OS X 10.13.1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z'
System info: host: 'test', ip: '', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.1', java.version: '1.8.0_152'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptSslCerts: true, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.34.522932 (4140ab217e1ca1..., userDataDir: /var/folders/j_/f03djz4n2bv...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: MAC, platformName: MAC, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 63.0.3239.132, webStorageEnabled: true}
Session ID: d1a7d84c06ae31e76c872e6be1a61824
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:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:537)
at ru.yandex.qatools.ashot.util.JsCoords.findCoordsWithJquery(JsCoords.java:30)
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:115)
at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:132)
at ExampleSel3.screenshotParticularTag(ExampleSel3.java:187)
at ExampleSel3.openApplication(ExampleSel3.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:571)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:707)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:979)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1187)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)
at org.testng.TestNG.runSuites(TestNG.java:1028)
at org.testng.TestNG.run(TestNG.java:996)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)
The error says it all : 错误说明了一切:
org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'offset' of null
It doesn't looks like your execution have reached till new AShot().takeScreenshot(driver,portal);
在
new AShot().takeScreenshot(driver,portal);
之前,您的执行似乎没有达到new AShot().takeScreenshot(driver,portal);
Your main issue is the version compatibility among the binaries you are using as follows : 您的主要问题是所使用的二进制文件之间的版本兼容性 ,如下所示:
java.version: '1.8.0_77'
java.version: '1.8.0_77'
chromedriver=2.34.522932
chromedriver=2.34.522932
chrome=63.0.3239.132
chrome=63.0.3239.132
Selenium v2.52.0
of '2016-02-11 19:06:42'
'2016-02-11 19:06:42'
Selenium v2.52.0
JDK
to recent levels Version 8 Update 151
. JDK
升级到最新Version 8 Update 151
。 ChromeDriver
to ChromeDriver v2.34
level. ChromeDriver
保持在ChromeDriver v2.34
级别。 Chrome
to Chrome v63.x
level. Chrome
保持在Chrome v63.x
级别。 Selenium
to current levels Version 3.8.1
. Selenium
升级到当前Version 3.8.1
。 Test
. Test
。 For a detailed discussion on the error sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
you can see this Discussion
有关错误
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
的详细讨论,您可以查看此Discussion
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.