有人可以指导我如何实现以下目标:
我正在使用selenium web driver java。
每当我点击网页上的预览按钮时,pdf就会在新的浏览器中打开,我需要保存带有动态名称的pdf文件。
到目前为止,我可以单击预览按钮,然后使用pdf打开一个新的浏览器。这里的浏览器没有网址。
pdf打开后我发送密钥控制+ s。
然后出现保存对话框窗口。我被困在这里关于如何将pdf保存到本地驱动器。
主浏览器是IE,但我首先尝试使用Firefox
答案 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();