Selenium - копирование в буфер обмена не работает для встроенного PDF - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь проверить содержимое 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();

Вот исходный код страницы для Embedded pdf enter image description here

Не уверен, что я не так делаю.Может ли кто-нибудь, пожалуйста, помогите.Спасибо.

Chomredriver 2.39 Chrome версия 66

1 Ответ

0 голосов
/ 07 июня 2018

Возможно, вы получаете неправильный вывод, потому что элемент управления может не отображаться на той же странице даже после переключения на iframe.Перед отправкой команды копирования необходимо выполнить операцию Click в PDF.

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

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

(или)

Элемент WebElement = driver.findElement (By.xpath ("// * [@ id = 'plugin']"));

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

element.sendKeys (selectAll);

element.sendKeys (copy);

...