Проблемы с подключением к окну JavaScript с Watir - PullRequest
1 голос
/ 30 декабря 2011

Я новичок в Watir и работаю над созданием инструмента тестирования для своей работы.
Я столкнулся с проблемой, которую не могу решить даже после проверки нескольких сайтов.

Создание окна javascript ниже: (созданное окно содержит pdf в окне, поэтому единственными «кнопками» являются свернуть, развернуть, закрыть)

<a id="LogIn_HyperLink2" class="ms-WPTitle" onclick="javascript:var win = new Window({className: 'spread', title: 'Security Statement', top:0, left:1, width:750, height:365, url:'--redacted--/security.pdf', showEffectOptions: {duration:1.0}}); win.setConstraint(true, {left:10, right:20}); win.showCenter(); return false;" href="--redacted--/security.pdf" style="color:#6699cc; font-weight:bold;">Security Statement</a><br>

Я пытался использовать оба

puts browser.modal_dialog(:title, "Security Statement").exists?
puts browser.javascript_dialog.exists?

оба вернули 'false'

Какой подход я должен использовать, чтобы присоединиться к этому новому окну, или более непосредственно: как я могу закрыть это новое окно?

Вы можете увидеть страницу по этой ссылке (только для IE)

1 Ответ

1 голос
/ 30 декабря 2011

Если окно содержит PDF-файл, это окно браузера, а не модальное всплывающее окно JavaScript (предупреждение, подтверждение, приглашение)

Он определен для запуска без активных всех обычных меню и т. Д., Но это все еще окно браузера. Вы можете прикрепить к нему, как описано в разделе Watir Wiki о новых окнах браузера , используя URL или заголовок, так как вы знаете оба из них (учитывая HTML, который вы нам показали).

Если вы используете Watir-Webdriver, используйте его команды переключения окон. Прямо сейчас watirspec для этого - ваша лучшая ссылка на поддерживаемые методы и как они работают.

EDIT Спасибо за ссылку. Хотя вышесказанное будет верно для нового окна браузера, это не то, с чем вы столкнулись. Все, что у вас есть, - это все внутри HTML браузера, созданного в DOM на лету с помощью JavaScript. Это все стандартные элементы HTML, с которыми легко взаимодействовать, как только вы узнаете, что происходит (на самом деле это ИМХО проще, чем всплывающее окно или отдельное окно)

Используйте инструменты разработчика IE, после того, как вы щелкнете по ссылке, которая отображает это «окно», щелкните значок на панели инструментов инструментов dev, чтобы обновить DOM в инструментах dev, и вы сможете это увидеть.

Внешний контейнер выглядит как div класса 'dialog', который на данный момент уникален в DOM.

Под этим элементом управления находятся три элемента div с классами «spread_close», «spread_minimize», «spread_maximize». Есть три таблицы, которые содержат графические элементы для верхней, боковых сторон и нижней части «окна», но там есть фактическое содержимое ZERO, это просто визуальный фрейм окна.

Существует также iframe, который перекрывает это окно, которое, я думаю, было бы содержимым (я не могу загрузить его, может быть, потому что я не авторизован для этого или что-то)

Если вы просто хотите закрыть окно, попробуйте следующее:

browser.div(:class => 'spread_close').click

Поскольку он появляется из-за большого количества JS-кода на стороне клиента, вам может потребоваться использовать что-то вроде метода when_present после нажатия на ссылку, прежде чем вы начнете взаимодействовать с ней. например, если все, что вы хотите сделать, это щелкнуть ссылку, чтобы открыть ее, а затем закрыть ее, вы сделаете что-то вроде этого

browser.link(:text => 'Security Statement').click
browser.div(:class => 'spread_close').when_present.click
...