java - 使用 Selenium WebDriver for Firefox 下载 pdf

标签 java selenium pdf firefox

我正在尝试将 .pdf 下载到我的本地,以便我可以使用 Apache PDFBox 从中读取文本并将其验证为我的测试套件的一部分。我已经找到了一些代码,可以通过点击 URL 从 Firefox 下载 pdf。这对我不起作用,因为我正在使用的 pdf 是 secret 文档,因此它不会通过 URL 公开,而是作为弹出窗口加载到 PDF Viewer 中。在浏览器中加载 PDF 查看器后,有人知道如何点击 Firefox PDF 查看器中的下载按钮吗?

enter image description here

我已经尝试通过元素的 id 查找它,which = "download":

(new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("download")));
driver.findElement(By.id("download")).click(); 

不幸的是,这不起作用,因为它说找不到元素。有人知道解决方法吗?

更新:我描述的弹出窗口是一个 iframe 元素。这导致无法找到“下载”元素。修复了 @4M01 的 switchTo() 答案。

最佳答案

正如你所说,

instead loaded within PDF Viewer as a popup window

您需要使用 switchTo() 处理不同窗口之间的切换驱动对象的方法。

下面的代码对我来说工作正常,没有问题,我可以点击下载图标。

public class FirefoxPDFTest {
      WebDriver driver;

    @BeforeClass
    void Setup(){
        System.setProperty("webdriver.gecko.driver", "C:\\Automation\\Selenium\\drivers\\geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
    }

    @Test
    void downloadPDF(){
        driver.get("http://www.pdf995.com/samples/pdf.pdf");
        waitTillPageLoad();
        driver.findElement(By.id("download")).click();
    }



    private void waitTillPageLoad(){
        new WebDriverWait(driver, 30).until(driver -> ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete"));
    }


    @AfterClass
    void tearDown(){
        driver.close();
        driver.quit();
    }

}

关于java - 使用 Selenium WebDriver for Firefox 下载 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46435978/

相关文章:

java - 如何将 java 中的复杂映射序列化为 JSON

python - 消息: The browser appears to have exited before we could connect.

selenium - 机器人框架 : org. openqa.selenium.NoSuchSessionException

python - PDF miner - 提取字体大小?

java - Java 的 LinkedHashMap 是否维护键的顺序?

java - 在java 8中从LocalDateTime减去/添加 "zone diff time"的最有效方法是什么

python - 尝试打开 Firefox 通过 Django 的 manage.py 运行 Selenium 测试时权限被拒绝

java - 如何使用 Aspose Java jar 裁剪 PDF

javascript - 我可以使用 iText 创建 pdf 中不需要的字段吗?

java - 如何重新排列字符以使单词存在于字典中?