If I try on my local machine (Macbook)
byte[] screen = driver.takeScreenshot();
Driver:
public byte[] takeScreenshot() {
return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
I get
SCREENSHOT BYTES: -119807871131026100001373726882008520054886000-7418-1053100122110567678073676732801141111021051081010072 ... 66-51-53-81-71-37-7131115-33-25-66-501218163264-12801248163264-12801248163264-12801248163264-12801291446-13-31-13-36105-1856119-104-112-3112194-3361471279-107-3665110-3364000073697868-826696-126
But if I try it on Jenkins Windows slave, I get
SCREENSHOT BYTES: -1198078711310261000013737268820040002-1058600028-82566600109573686584120-100-19-63491000-62-96-11791091063 960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466116-201-91-24-43-101000073697868-826696-126
which is image, but blank (invisible).
I tried it in Chromedriver, Geckodriver and IE driver as well.
I met almost the same problem and resolved it by updating my Chrome from version 59.0.3071.115 to Google Chrome beta v60.0.3112.40.
My problem is that Selenium screenshot works good locally but only takes blank screenshot on Jenkins since last week. This is the screenshot before my updating to Chrome Beta version.
Then I found that Google realsed a new version of Chrome on 27th Jun. And my Chrome automatically updated on 30th June.That's all the reason.
I tried upgrating the chromedriver for 2.28 to 2.3, rolling back Chrome to version 64_59.0.3071.86, but it never worked. Then I found links below is really helpful.
※ Chrome 59 remote desktop chromedriver.exe saves white/blank