Selenium - 复制到剪贴板不适用于嵌入式pdf

时间:2018-06-06 12:09:06

标签: java selenium pdf automation clipboard

我正在尝试通过将内容复制到剪贴板并传输到String来验证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 enter image description here

的页面源代码

不确定我在做什么错。 任何人都可以帮忙。 谢谢。

Chomredriver 2.39 Chrome版本66

1 个答案:

答案 0 :(得分:1)

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

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

driver.findElement(By.xpath( “// * [@ id中= '插件']”))点击();

(或)

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

(JavascriptExecutor)driver.executeScript(“element.click()”);

element.sendKeys(全选);

element.sendKeys(复印件);