当前位置: 首页 > 知识库问答 >
问题:

下载PDF文件打开作为URL在不同选项卡在selenium

李耀
2023-03-14

场景:

我有一个应用程序,比如A:当我们登录到A时,我们有一个链接,比如B,点击它将打开一个新的浏览器。在browser B中,我们有一个链接可以打开PDF格式。一旦点击,该PDF将作为URL在第二个标签中打开,我们已经打开了A页。

boolean success = false;
String newWindowUrl = null;

try {
    WebDriver driver = getCustumWebDriver();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    //current window handle
    String beforWindowHandle = driver.getWindowHandle();
    _wait(2000);
    //Click on the element to which the pdf link is opened
    _click(element);
    waitForPageLoad();
    _wait(30000);

    Set<String> allWindowhandles = driver.getWindowHandles();
    for(String handle1 : allWindowhandles)
    {
        if(!handle1.equals(beforWindowHandle))
        {
            driver.switchTo().window(handle1);
            _wait(2000);
            newWindowUrl = driver.getCurrentUrl();
            docName = newWindowUrl.replaceAll("[^0-9]+", "");
            docName = saveDir.concat(docName).concat(".pdf");
            Robot rb = new Robot();

                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_S);
                _wait(3000);
                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_C);
                rb.keyRelease(KeyEvent.VK_C);
                rb.keyRelease(KeyEvent.VK_CONTROL);

                _wait(1000);

                rb.keyPress(KeyEvent.VK_HOME);
                rb.keyRelease(KeyEvent.VK_HOME);
                _wait(3000);

                StringSelection stringSelection = new StringSelection(saveDir);
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, stringSelection);

                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_CONTROL);
                rb.delay(3000);
                // _wait(3000);
                rb.keyPress(KeyEvent.VK_ENTER);
                rb.keyRelease(KeyEvent.VK_ENTER);
                _wait(2000);
    }

    }
    success = true;
    driver.close();

}

场景2:我可以强制应用程序打开一个新的PDF浏览器窗口,但我无法打开新PDF URL的特定窗口。我将尝试以下内容并给出我的观察:

**for(String handle1 : allWindowhandles)
            {
             // change focus to new tab
                driver.switchTo().window(handle1);
                if(!(driver.findElement(By.id("Element that will be present on browser window 1 - A ")).isDisplayed()||
                         driver.findElement(By.id("Element that will be present on browser window 2 - B ")).isDisplayed()))
{
rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_S);
                _wait(3000);
                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_C);
                rb.keyRelease(KeyEvent.VK_C);
                rb.keyRelease(KeyEvent.VK_CONTROL);

                _wait(1000);

                rb.keyPress(KeyEvent.VK_HOME);
                rb.keyRelease(KeyEvent.VK_HOME);
                _wait(3000);

                StringSelection stringSelection = new StringSelection(saveDir);
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, stringSelection);

                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_CONTROL);
                rb.delay(3000);
                // _wait(3000);
                rb.keyPress(KeyEvent.VK_ENTER);
}**

共有1个答案

高溪叠
2023-03-14

据我所知,您所提到的应用程序的开发人员已经在新选项卡中配置了pdf启动,所以我们不能在同一个选项卡中打开它,因为它已经在应用程序标签中配置了。

 类似资料:
  • .NET 4.6.1 C# 我在运行时生成一个pdf文件,并可以成功下载。我想在一个新的选项卡中打开新创建的pdf文件,而不是下载它。下面是我的代码(Web API 2.1方法): 我以为这会奏效,但行不通。我的锚标签上也有target=“_blank”。我如何在一个新的选项卡中打开我新生成的pdf文件,而不是浏览器想要下载到用户的硬盘驱动器?谢谢

  • 问题内容: 我想在包含该链接页面的同一窗口和同一选项卡中打开一个链接。 当我尝试使用打开链接时,它将在新选项卡中打开,而不是在同一窗口的同一选项卡中打开。 问题答案: 你需要使用name属性: 编辑:URL应该在协议之前。没有它,则尝试打开相对URL。经过Chrome 59,Firefox 54和IE 11的测试。

  • 在我们的应用程序中,我们有一个场景,我们点击一个链接,点击后打开一个新的选项卡,其中有一个动态生成的PDF。 生成的将在new选项卡中打开,并以作为URL。 我没有选择下载生成的PDF以及。 我们有什么办法能解决这个问题吗??提前谢谢你。

  • 我有一个每行都有一个URL的文本文档。我希望每个URL都在一个新选项卡中打开。这是我到目前为止所拥有的: 这给了我一个错误: 回溯(最近一次调用last):驱动程序中第100行的文件“scraper.py”。execute\u script(“window.open(url,'new\u window')”)文件“C:\Python37\lib\site packages\selenium\web

  • 我想使用Selenium WebDriver和Python在不同的选项卡中打开相当多的URL。 在我的代码中有什么可以改变的地方来让新的URL在new选项卡中打开吗? 谢谢你的帮助!

  • 我如何使用selenium(java)在IE中打开一个新的标签,并在该标签中打开一个url(而不是窗口)?我正在使用下面的代码打开一个新的标签?