gpt4 book ai didi

java - 使用 Selenium WebDriver for Firefox 下载 pdf

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:16 25 4
gpt4 key购买 nike

我正在尝试将 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com