如何使用Java在Selenium中截取可滚动的屏幕截图?

时间:2018-05-20 06:58:50

标签: selenium-webdriver

我是Selenium的初学者。

我有一个非常长的可滚动表单,自动脚本将填充,是否有一种方法,我可以在每次向下滚动页面时截取屏幕截图(网页驱动程序滚动填充表单,我没有'编写脚本以在Web驱动程序处理时向下滚动),以便可以在多个屏幕截图中捕获整个表单。

2 个答案:

答案 0 :(得分:0)

您可以根据需要捕获尽可能多的屏幕截图。在填写每一列后,填写每个第三列,无论如何。

或者您可以让webdriver填写整个表单并使用press pgup / pgdn模拟向上/向下滚动:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

Robot rob = new Robot();
rob.keyPress(KeyEvent.VK_PAGE_DOWN);
rob.keyRelease(KeyEvent.VK_PAGE_DOWN);

答案 1 :(得分:0)

我将如何做到这一点。在每次滑动时,您都可以截取屏幕截图,如步骤屏幕截图。

以下是屏幕截图的代码部分:

public static String takeScreenshot(WebDriver driver) {
    driver.get("http://www.google.com/");
    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    // Now you can do whatever you need to do with it, for example copy somewhere
    File dest = new File("c:\\tmp\\screenshot.png");

    FileUtils.copyFile(scrFile, dest);
   return dest.getAbsolutePath();
}

以下是垂直滑动的代码:

 public static void swipeVertical(WebDriver driver) {
        Dimension size = driver.manage().window().getSize();
        System.out.println(size);

        int starty = (int) (size.height * 0.70);
        int endy = (int) (size.height * 0.30);
        int startx = size.width / 2;

        new TouchAction(driver)
                .press(startx, starty)
                .waitAction(Duration.ofMillis(1000))
                .moveTo(startx, endy)
                .release()
                .perform();
    }

所以我的伪代码看起来像这样:

  1. WebDriver driver = initDriver();
  2. 加载页面和元素
  3. 的inputText(文本);
  4. takScreenShot(驱动器);
  5. 滑动(驱动器);
  6. ...

    重复直到结束......