Selenium:保存pdf,在没有网址的新浏览器中打开

时间:2017-07-21 14:31:39

标签: java selenium pdf selenium-webdriver

有人可以指导我如何实现以下目标:

我正在使用selenium web driver java。

每当我点击网页上的预览按钮时,pdf就会在新的浏览器中打开,我需要保存带有动态名称的pdf文件。

到目前为止,我可以单击预览按钮,然后使用pdf打开一个新的浏览器。这里的浏览器没有网址。

pdf打开后我发送密钥控制+ s。

然后出现保存对话框窗口。我被困在这里关于如何将pdf保存到本地驱动器。

主浏览器是IE,但我首先尝试使用Firefox

enter image description here

2 个答案:

答案 0 :(得分:1)

你可以尝试这段代码: - 我认为这就是你要找的东西。让我知道如果这是你所期待的。

System.setProperty("webdriver.gecko.driver", "D:/geckodriver.exe");
    WebDriver driver = new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf");
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    

    Thread.sleep(2000);
    java.awt.Robot robot = new java.awt.Robot();
    Thread.sleep(1000);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_S);
    robot.keyRelease(KeyEvent.VK_S);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    Thread.sleep(2000);
    robot.keyPress(KeyEvent.VK_ENTER);
    Thread.sleep(2000);     
    robot.keyPress(KeyEvent.VK_TAB);   // file replace move to yes button
    Thread.sleep(2000);
    robot.keyPress(KeyEvent.VK_ENTER); // hit enter

首先执行代码,看看代码是否正常,是你想要的。

编写最后三行代码以替换现有的pdf文件。所以你只需先评论这三行,执行代码,然后再包括最后三行代码

您需要使用Robot Class来处理事件。 让我知道这是否适用于你。

答案 1 :(得分:0)

我认为您应该尝试立即下载该文件,而不是尝试管理该浏览窗口。

您可以设置download元素的属性a,然后单击该元素。请参阅以下代码:

WebElement pdf = driver.findElement(By.cssSelector("a"));
String script = "arguments[0].setAttribute('download');"
((JavascriptExecutor)driver).executeScript(script, pdf);
pdf.click();