如果代码是在服务器上执行的,截图速度非常快 localhost
,不到一秒(大约400-500毫秒):
private RemoteWebDriver driver;
private DesiredCapabilities dc = new DesiredCapabilities();
@Before
public void setUp() throws MalformedURLException {
....
....
dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME);
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc);
}
@Test
public void test() throws InterruptedException, IOException {
driver.get("https://google.com");
driver.findElement(By.name("q")).sendKeys("automation test");
long before = System.currentTimeMillis();
//here is the problem
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
long after = System.currentTimeMillis();
System.out.println(after-before);
FileUtils.copyFile(srcFile, new File("/Users/name/localpath/test.png"));
}
但如果目标服务器更改为 public ip
如果安装了selenium服务器,截图速度会慢一些(大约5秒)。可能这是由于客户机和服务器之间的距离,所以一定有区别。
有没有可能减少截图的拍摄时间?我在考虑降低图像分辨率,但我该怎么调整呢?
2条答案
按热度按时间drkbr07n1#
截图
获取较小尺寸屏幕截图的一种方法(除了使用各种文件格式)是更改屏幕截图的大小:您可以拍摄您特别感兴趣的web元素(或页面区域)的屏幕截图。
尝试以下操作(您将需要使用BuffereImage类):
i86rm4rw2#
问题很可能是通过有线传输文件。也可能是在创建文件时。
我建议尝试使用base64输出,看看是否可以减少传输时间: