我正在尝试通过将内容复制到剪贴板并传输到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();
的页面源代码
不确定我在做什么错。 任何人都可以帮忙。 谢谢。
Chomredriver 2.39 Chrome版本66
答案 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(复印件);