Saturday, May 30, 2020

Image Comparison in Selenium Using aShot third party jar



Add   ashot Dependency 


    ru.yandex.qatools.ashot
    ashot
    1.5.3


Take a screenshort of ur image 

WebElement myWebElement = webDriver.findElement(By.cssSelector("#my_element"));
new AShot()

  .takeScreenshot(webDriver, myWebElement);


Compare with actual image using imagediff


ImageDiff diff = new ImageDiffer().makeDiff(myScreenshot, anotherScreenshot);

BufferedImage diffImage = diff.getMarkedImage();




import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import ru.yandex.qatools.ashot.AShot;
import ru.yandex.qatools.ashot.Screenshot;
import ru.yandex.qatools.ashot.comparison.ImageDiff;
import ru.yandex.qatools.ashot.comparison.ImageDiffer;
import ru.yandex.qatools.ashot.coordinates.WebDriverCoordsProvider;
public class Image_Comparsion
{
public static void main(String args[]) throws Exception
{
System.setProperty("webdriver.chrome.driver","D://Chrome Driver 2.38//chromedriver_win32//chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
WebElement logoImage = driver.findElement(By.xpath("//img[@id='hplogo']"));
BufferedImage expectedImage = ImageIO.read(new File(System.getProperty("user.dir") +"\\Images\\googleLogo.png"));
Screenshot logoImageScreenshot = new AShot().coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(driver, logoImage);
BufferedImage actualImage = logoImageScreenshot.getImage();
ImageDiffer imgDiff = new ImageDiffer();
ImageDiff diff = imgDiff.makeDiff(actualImage, expectedImage);
Assert.assertFalse(diff.hasDiff(),"Result of Image comparsion");
System.out.println("Images Compared Sucesfully");
}
}

https://www.qaautomation.co.in/2018/11/image-Comparison-in-selenium-using-ashot.html

How to AutoDownload files using Selenium--

auto download in selenium (Disable file save dialog)

Chrome :



public class Test {
static WebDriver driver;
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","/Users/uname/sel/chromedriver");
       String downloadFilepath = "/Users/uname/sel/";
 
       HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
       chromePrefs.put("profile.default_content_settings.popups", 0);
       chromePrefs.put("download.default_directory", downloadFilepath);
      
       ChromeOptions options = new ChromeOptions();
       options.setExperimentalOption("prefs", chromePrefs);
       options.addArguments("--test-type");
       options.addArguments("--disable-extensions"); //to disable browser extension popup
       options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
 
       driver = new ChromeDriver(options);  
                driver.get("http://www.seleniumhq.org/download/");
                driver.findElement(By.linkText("32 bit Windows IE")).click();
}
}


Firefox :

public class FileDownloadFireFox {
 
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "/Users/uname/sel/geckodriver");
String downloadFilepath = "/Users/uname/sel/";
FirefoxOptions options = new FirefoxOptions();
options.setAcceptInsecureCerts(true);
options.addPreference("browser.download.folderList", 2);
options.addPreference("browser.helperApps.alwaysAsk.force", false);
options.addPreference("browser.download.dir", downloadFilepath);
options.addPreference("browser.download.defaultFolder",downloadFilepath);
options.addPreference("browser.download.manager.showWhenStarting", false);
options.addPreference("browser.helperApps.neverAsk.saveToDisk","multipart/x-zip,application/zip,application/x-zip-compressed,application/x-compressed,application/msword,application/csv,text/csv,image/png ,image/jpeg, application/pdf, text/html,text/plain,  application/excel, application/vnd.ms-excel, application/x-excel, application/x-msexcel, application/octet-stream");
FirefoxDriver driver = new FirefoxDriver(options);
driver.get("http://www.seleniumhq.org/download/");
        driver.findElement(By.linkText("32 bit Windows IE")).click();    
}
 
}