Перейти к содержимому

Фотография

Работа в Watir с Pop - up окнами


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 narod

narod

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Волочков Олег

Отправлено 15 апреля 2011 - 13:30

Здравствуйте Коллеги.
Есть задача из одного окна браузера (IE) запустить другое (2) и произвести на (2) окне браузера действия, результат которых будет добавлен на 1.
Как пример использовался ModalDialogs, но его выполнение выдало мне ошибку.
Пожалуйста подскажите что можно было сделать в описанной выше ситуации.(желательно примером кода с комментами)

"http://wiki.openqa.o.../Modal Dialogs"

require "rubygems"
require "watir"
b = Watir::Browser.new()
b.goto("http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/showModalDialog2.htm")
b.button(:value,"Push To Create").click_no_wait
puts b.modal_dialog(:title, "showModalDialog Method Sample Target Page").exists?
puts b.modal_dialog(:title, "showModalDialog Method Sample Target Page").title
b.modal_dialog(:title, "showModalDialog Method Sample Target Page").close

C:/Ruby187/lib/ruby/gems/1.8/gems/watir-1.8.0/lib/watir/modal_dialog.rb:51:in `locate': Modal Dialog with title showModalDialog Method Sample Target Page not found. Timeout = 2.0 (Watir::Exception::NoMatchingWindowFoundException)
from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-1.8.0/lib/watir/modal_dialog.rb:86:in `initialize'
from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-1.8.0/lib/watir/container.rb:188:in `new'
from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-1.8.0/lib/watir/container.rb:188:in `modal_dialog'
from C:/Project/eclipse_workspace/Ruby_Test/mod.rb:6

  • 0

#2 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 15 апреля 2011 - 20:56

ОС, версия IE?
  • 0

#3 narod

narod

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Волочков Олег

Отправлено 16 апреля 2011 - 05:25

ОС, версия IE?

ОС Windows XP, Ie 7. А вообще интересует, что бы работало под ie 6 - ie 8. Какой то универсально работающий пример.
  • 0

#4 sawoy

sawoy

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 16 апреля 2011 - 09:05

Сначала нужно отключить popup blocker в IE если он включен. Далее:

1 вариант:

require "rubygems"
require "watir"
b = Watir::Browser.new()
b.goto("http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/showModalDialog2.htm")
b.button(:value, "Push To Create").click_no_wait
mw = b.modal_dialog # try to find some modal/popup window which is a child of opened window
puts mw.exists?
puts mw.title
mw.close

2 вариант:

Использовать приведенный в доке код.
Но при этом подтвердить что title для modal window формируется внутрях Watir корректно. При необходимости исправить.

Смотреть lib/watir/modal_window.rb, строка 46 (для watir 1.6.6):

Watir::until_with_timeout do
  # FIXME if title of modal window has another format 
  # IE < 8 has "#{what} -- Web Page Dialog" 
  # IE >= 8 has "#{what} -- Webpage Dialog" 
  title = "#{what} -- Web Page Dialog" 
  @hwnd, arr = FindWindowEx.call(0, 0, nil, title)
  @hwnd > 0
 end

  • 0

#5 narod

narod

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Волочков Олег

Отправлено 19 апреля 2011 - 08:46

Спасибо, заработало, вот еще вопрос в догонку, как отработать почти с таким же окном, popup Explorer , вызваным из javascript
  • 0

#6 sawoy

sawoy

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 19 апреля 2011 - 13:14

каким именно образом вызывается попап?

Предполагаю, чем-то вроде:

# This is the main method for accessing JavaScript popups.
# returns a PopUp object
def popup         # BUG this should not be on the container object!
  PopUp.new(self)
end

ну и есть еще:
module Watir
  class Dialog
  ...
  end
end

  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных