Взаимодействие с PDF всплывающим в Selenium - PullRequest
4 голосов
/ 12 июля 2011

Я пытаюсь проверить страницу, где нажатие кнопки генерирует всплывающее окно в формате PDF.Я бы хотел, чтобы селен щелкнул по всплывающему окну и либо сделал снимок экрана, либо сохранил PDF.

Я использую следующий код, чтобы все дескрипторы окна использовали команду switchTo(), но когдая выполняю его, он возвращает только одно окно.Selenium, похоже, не распознает всплывающее окно pdf.

Set<String> handles = driver.getWindowHandles();
//converts set to array
String[] array = handles.toArray(new String[0]);

System.out.println(Arrays.asList(array));

Есть ли другой способ переключиться на всплывающее окно pdf?

1 Ответ

2 голосов
/ 17 июля 2011

Поскольку Selenium может управлять только теми вещами, которыми может управлять DOM (в среде IDE только выполняется JavaScript), вы не можете делать снимок экрана.Единственный вариант - сохранить его, если только JavaScript для нового HTML5 не настолько мощный, чтобы запускать вещи в операционной системе (я не знаю).Я позволю вам найти код для сохранения PDF в Google с помощью JavaScript, но эта информация должна помочь вам начать работу.Просто создайте пользовательскую команду Selenium.prototype.doLaunchAndSavePDF или что-то еще, чтобы запустить PDF и сохранить его.И ваш параметр "target" будет путь и имя файла.Я не уверен, как Selenium передает прямую (или обратную) косую черту в JavaScript, поэтому будьте осторожны с этим.Удачи!

Вариант № 1 - при использовании Selenium IDE:

Укажите файл user-extensions.js в разделе Selenium IDE> Параметры (меню)> Параметры (меню)option)> вкладка General, затем перейдите к файлу в разделе «Selenium Core Extensions».

Option # 2 - при использовании Selenium RC Server:

Если выЕсли вы не используете IDE и не используете сервер Selenium RC с драйвером клиента (например, JUnit), вы должны указать путь к файлу * .js с параметром -userExtensions при запуске Selenium RC Server в командной строке.Но вы сказали, что просто хотите использовать IDE, поэтому я бы проигнорировал это.Для использования сервера Selenium RC требуется совсем немного другой настройки.

java -jar selenium-server.jar -userExtensions user-extensions.js

=======================

Я сделал следующую настраиваемую команду (функцию JavaScript) в своем пользовательском файле user-extensions.js. Мне пришлось выйти и перезапустить IDE.прежде чем он нашел это.Введите все после «do» в поле «Command» в IDE, чтобы найти пользовательскую команду.Похоже, он также добавил «customAlertAndWait» в IDE.

Код в файле user-extensions.js:

Selenium.prototype.doCustomAlert = function(sTarget, sValue) {alert ('Target:' + sTarget + '... Value:' + sValue);};

Детали команды Selenium IDE:

Команда: customAlertЦель: настраиваемая цель оповещенияЗначение: настраиваемое значение оповещения

...