如何使用Selenium webdriver执行Control + Save操作?

时间:2013-07-18 06:27:13

标签: java selenium-webdriver

我试图使用selenium将.html页面保存到我的桌面。

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:5)

您可以使用Advanced User Interactions API

new Actions(driver)
    .sendKeys(Keys.chord(Keys.CONTROL, "s"))
    .perform();

这将打开“另存为”对话框,您需要在该对话框中手动/使用Java的Robot类进行导航:

Robot robot = new Robot();
// press Ctrl+S the Robot's way
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_S);
// press Enter
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

Ctrl + S 输入。请注意在每个系统和/或浏览器上都能正常工作。

答案 1 :(得分:-1)

JavascriptExecutor js = (JavascriptExecutor) driver;                              
String base64string = (String) js.executeScript("var c = document.createElement('canvas');"
    + " var ctx = c.getContext('2d');"
    + "var img = document.getElementsByTagName('img')[0];"
    + "c.height=img.naturalHeight;"
    + "c.width=img.naturalWidth;"
    + "ctx.drawImage(img, 0, 0,img.naturalWidth, img.naturalHeight);"
    + "var base64String = c.toDataURL();"
    + "return base64String;");
String[] base64Array = base64string.split(",");

String base64 = base64Array[base64Array.length - 1];

byte[] data = Base64.decode(base64);

ByteArrayInputStream memstream = new ByteArrayInputStream(data);

BufferedImage saveImage = ImageIO.read(memstream);

ImageIO.write(saveImage, "png", new File("path"));