Получение скриншота с нескольких URL с помощью Ashot и Selenium - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь автоматизировать тестовый пример, в котором мне нужно сделать снимок экрана определенного экрана, который существует на разных сайтах. В частности, я пытаюсь проверить, выровнен ли конкретный флажок или нет. Ниже приведено то, что у меня есть в качестве сценария, и я использую Ашот, чтобы сделать снимки экрана. Сценарии регистрируются в трех системах и нажимают на нужную ссылку. на него, чтобы щелкнуть, однако есть только один снимок экрана с последним URL против снимка экрана с каждого URL. Пожалуйста, помогите мне объяснить, как я могу повторить Ashot, чтобы он делал скриншот для каждого веб-сайта вместо того, что он делает сейчас. По сути, все шаги повторяются, за исключением создания снимка экрана, и я хочу, чтобы сценарий также повторял снимки экрана.

import java.io.File;
import java.io.IOException;
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 org.testng.annotations.*;

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

public class checkboxAlignment {

    String driverPath = "C:\\Users\\xxx\\Desktop\\Work\\chromedriver.exe";
    public WebDriver driver;
    public String expected = null;
    public String actual = null;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching chrome browser");
        System.setProperty("webdriver.chrome.driver", driverPath);
        driver = new ChromeDriver();


    }

    @Test(dataProvider = "URLprovider")
    private void notePrice(String url) throws IOException {
        driver.get(url);
        System.out.println(driver.getCurrentUrl());
        WebElement email = driver.findElement(By.xpath("//input[@id='Email']"));
        WebElement password = driver.findElement(By.xpath("//input[@id='PWD']"));
        WebElement submit = driver.findElement(By.xpath("//button[@type='submit']"));
        email.sendKeys("xxx@xxx.com");
        password.sendKeys("xxx");
        submit.click();
        System.out.println(driver.getTitle());
        driver.manage().window().maximize();
        //click on the  PI tab
        driver.findElement(By.id("IDpi")).click();
       // This doesnot iterate, only one screenshot is taken by Ashot
        Screenshot fpScreenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
        ImageIO.write(fpScreenshot.getImage(),"PNG",new File("C://Users//dir//eclipse-workspace//someDir//screenshots//checkbox.jpg"));

    }

    @DataProvider(name = "URLprovider")
    private Object[][] getURLs() {
        return new Object[][] { { "http://www.someURL.com/A" }, { "http://www.someurl.com/B" },
                { "http://www.someurl.com/C" } };
    }


}

1 Ответ

1 голос
/ 11 апреля 2019

Вы сохраняете все скриншоты в одном файле checkbox.jpg.Вот почему ваши предыдущие скриншоты заменяются последними.Попробуйте назвать файл по-разному для каждого скриншота.Кроме того, сохраняйте снимки экрана с расширением .png, поскольку это фактический тип файла.

Попробуйте сохранить изображение:

ImageIO.write(fpScreenshot.getImage(),"PNG",new File("C://Users//dir//eclipse-workspace//someDir//screenshots//checkbox-"+driver.getCurrentUrl()+".png"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...