gpt4 book ai didi

java - 使用 Ashot 和 Selenium 从多个 URL 截取屏幕截图

转载 作者:行者123 更新时间:2023-12-02 10:00:56 33 4
gpt4 key购买 nike

我正在尝试自动化一个测试用例,其中我必须截取不同网站中存在的特定屏幕的屏幕截图。具体来说,我正在尝试测试特定的复选框是否对齐。下面是我的脚本,我使用 Ashot 来截取屏幕截图。脚本登录到三个系统,然后单击我想要的链接到它来单击,但是最后一个 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" } };
}


}

最佳答案

您正在将所有屏幕截图保存在同一个文件 checkbox.jpg 中。这就是为什么您之前的屏幕截图会被最后一张屏幕截图取代。尝试为每个屏幕截图命名不同的文件。另外,使用 .png 扩展名保存屏幕截图,因为这是实际的文件类型。

尝试保存图像:

ImageIO.write(fpScreenshot.getImage(),"PNG",new File("C://Users//dir//eclipse-workspace//someDir//screenshots//checkbox-"+driver.getCurrentUrl()+".png"));

关于java - 使用 Ashot 和 Selenium 从多个 URL 截取屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638864/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com