2012-05-16 4 views
1

Итак, у меня есть сценарий, который должен открыть всплывающее окно и сделать несколько операций над этим окном. Я сталкиваюсь с некоторыми проблемами, когда открывается окно, но сценарий останавливается, пока я не нажму вручную, и он найдет его, и я могу продолжить.Всплывающие остановки скрипта watir-webdriver от выполнения каких-либо дополнительных действий

Я использую последний Watir-WebDriver и ChromeDriver (потому что он выполняет гораздо быстрее, чем IE или Firefox)

#problem area of the script 
#use send keys due to modal window 
b.frame(name: 'MainBody').link(text: 'Add Event').send_keys :return 
b.window(title: 'Add Event').use do 
    #do some stuff 
end 
b.window(title: 'Add Event').wait_while_present 

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

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

Любые идеи?

ответ

3

грязный метод был бы:

b.windows.last.use  #to switch to the new tab/pop-up window 
     b.window(title: 'Add Event').use do 
      #do some stuff 
     end 
    b.windows.last.close #to close the new tab/pop-up window 
    b.windows.first.use  #to return to initial tab/pop-up window 

работал 100% времени для меня.

+0

Я дам, что выстрел.. Кажется, он ограничен ChromeDriver в Windows XP, когда я запускал его в Firefox на OS X, он работал нормально. Вся эта старая техника иногда бывает отвратительной. – DVG

0

Возможно, это попытка слишком быстро? вы могли бы попробовать что-то вроде

b.window (названия: «Добавить событие») when_present.use сделать # сделать некоторые вещи конца