pazone / ashot

WebDriver Screenshot utility. Take screenshots, crop, prettify, compare
Other
636 stars 157 forks source link

Ashot with IE11 taking partial image with black spot in rest of the scrolled area #226

Open amit227 opened 3 years ago

amit227 commented 3 years ago

Hi ,

I am using selenium 4.0 and ashot 1.53 with IE 11 Full page screenshot is working fine withchrome and firefox but not with IE11.

Image is attached below from IE NTDotComVisualTest4 homePage4_Baseline

amit227 commented 3 years ago

I have already tried Screenshot pageScreenShot = new AShot().shootingStrategy(ShootingStrategies.viewportRetina(1000, 0, 0, 2)) .takeScreenshot(driver); but did get any luck but the same code works with Chrome and Firefox for taking full page screenshot..

Could anyone please help ?

valfirst commented 3 years ago

@amit227 could you please provide an SSCCE (Short, Self Contained, Correct (Compilable), Example)?

amit227 commented 3 years ago

@amit227 could you please provide an SSCCE (Short, Self Contained, Correct (Compilable), Example)?

Hi @valfirst

I have prepared a demo code for you to understand my problem ,

Below is AshotDemo.java Class where I am trying to launch a URL and trying to take full Page screenshot with given browser using Ashot

package com.ntrs.utils;

import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;

import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.PageLoadStrategy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.ie.InternetExplorerOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait;

import ru.yandex.qatools.ashot.AShot; import ru.yandex.qatools.ashot.Screenshot; import ru.yandex.qatools.ashot.shooting.ShootingStrategies;

public class AShotDemo {

public static void main(String[] args) throws IOException, InterruptedException {
    // TODO Auto-generated method stub

    String Browser = "IE";
    WebDriver driver;

    switch (Browser.toUpperCase()) {
    case "IE":
        System.setProperty("webdriver.ie.driver", "./Drivers/IEDriverServer3.7.exe");
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("takesScreenShot", true);
        // caps.setCapability("ie.enableFullPageScreenshot", false);
        InternetExplorerOptions ieop = new InternetExplorerOptions();
        ieop.setPageLoadStrategy(PageLoadStrategy.EAGER);
        driver = new InternetExplorerDriver(caps);
        break;
    case "CHROME":
        System.setProperty("webdriver.chrome.driver", "./Drivers/chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("disable-infobars");
        /* Added to resolve error: DevToolsActivePort file doesn't exist */
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
        /* Added to resolve error: DevToolsActivePort file doesn't exist */
        driver = new ChromeDriver();
        break;
    case "FF":
        System.setProperty("webdriver.gecko.driver", "./Drivers/geckodriver.exe");
        driver = new FirefoxDriver();
        break;
    default:
        System.setProperty("webdriver.ie.driver", "./Drivers/IEDriverServer.exe");
        driver = new InternetExplorerDriver();
        break;
    }

    // Maximize the browser
    driver.manage().window().maximize();

    // setting implicit wait

    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

    // Launch the url

    driver.navigate().to("https://github.com/pazone/ashot");

     //Wait for Javascript to load
    ExpectedCondition<Boolean> jsLoad = driver1 -> ((JavascriptExecutor) driver1)
            .executeScript("return document.readyState").toString().equals("complete");

    // delay

    Thread.sleep(3000);

    // taking screenshot

    Screenshot pageScreenShot = new AShot().shootingStrategy(ShootingStrategies.viewportRetina(1000, 0, 0, 2))
            .takeScreenshot(driver);

    // Defining screenshot locoation for file

    // BaseLine, Actual Photo Files
    File ImageFile = new File("C:\\AShot\\Images\\");

    ImageIO.write(pageScreenShot.getImage(), "PNG", ImageFile);

}

}

` Output as full page screenshot coming as below with IE11 but the same code works fine with Chrome and Firefox

Images

amit227 commented 3 years ago

Could anyone please help on above issue ?