【问题标题】:Selenium - Copy to Clipboard not working for Embedded pdfSelenium - 复制到剪贴板不适用于嵌入式 pdf
【发布时间】:2018-06-07 18:20:20
【问题描述】:

我正在尝试通过将内容复制到剪贴板并传输到字符串来验证 pdf 的内容。下面是我的代码

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
            for (String string : tabs) {
                System.out.println("tab id:: "+string);
            }   

            driver.switchTo().window(tabs.get(1));  //pdf opens in new tab so switching to new tab

            pause(5000);

                String selectAll = Keys.chord(Keys.CONTROL,Keys.chord("a"));
                String copy = Keys.chord(Keys.CONTROL,Keys.chord("c"));
         driver.switchTo().frame(driver.findElement(By.xpath("//html/body//div/div/iframe")));
                driver.findElement(By.xpath("//*[@id='plugin']")).sendKeys(selectAll);  //Select all works on the opened pdf

                pause(3000);

                driver.findElement(By.xpath("//*[@id='plugin']")).sendKeys(copy);

                pause(5000);    
                Clipboard clipboard2 = Toolkit.getDefaultToolkit().getSystemClipboard();
                Transferable contents = clipboard2.getContents(null);
                String x = (String) contents.getTransferData(DataFlavor.stringFlavor);
                System.out.println(x);  //getting worng out put here instead of pdf content

选择内容有效,但我得到一些像这样的随机输出

tab id:: CDwindow-FC2070E3D2902357E08E5D6720AF9766
tab id:: CDwindow-D06392BD9261B14C083395D57AE805FA
Clipboard clipboard2 = Toolkit.getDefaultToolkit().getSystemClipboard();

这里是嵌入式pdf的页面源

不知道我做错了什么。 任何人都可以帮忙。 谢谢。

Chomredriver 2.39 Chrome 版本 66

【问题讨论】:

标签: java selenium pdf automation clipboard


【解决方案1】:

您可能会得到错误的输出,因为即使在切换到 iframe 之后,控件也可能不在同一页面上。 您需要在发送复制命令之前对 PDF 进行点击操作。

     driver.switchTo().frame(driver.findElement(By.xpath("//html/body//div/div/iframe")));

driver.findElement(By.xpath("//*[@id='plugin']")).click();

(或)

WebElement element = driver.findElement(By.xpath("//*[@id='plugin']"));

(JavascriptExecutor) driver.executeScript("element.click()");

element.sendKeys(selectAll);

element.sendKeys(复制);

【讨论】:

  • 感谢您的意见,我现在正在尝试不同的方法来解决这个问题。我们现在直接读取pdf编码的源码 driver.findElement(By.xpath("//*[@id='plugin']")).getAttribute("src");并将pdf源转换为字符串并进行验证。
猜你喜欢
  • 2013-01-05
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 2021-11-19
相关资源
最近更新 更多