Watir и изскачащ прозорец на javascript

Току-що започнах да уча Watir... Заседнал съм с това:

Опитвам се да накарам Watir да кликне (и да прочете съдържанието) на този изскачащ прозорец на javascript:

http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert

Моят Watir код изглежда така:

require 'watir'
b = Watir::Browser.start "www.w3schools.com/js/tryit.asp?filename=tryjs_alert"
b.maximize
b.frame(:name, "view").button(:text, "Show alert box").click
b.javascript_dialog.button('OK').click

..Но не работи, Watir не щраква върху бутона "OK" в изскачащия прозорец.

Знам, че Watir-Webdriver може да обработва изскачащи прозорци ("browser.alert.ok"), но може ли "класическият" Watir само за IE да прави това (без никакви сложни хакове, използвайки AutoIt / Sikuli и т.н.)?

РЕДАКТИРАНЕ: Успях да премахна напълно изскачащия прозорец с този ред:

b.frame(:name, "view").execute_script("window.alert = function() {}")

По-добре от нищо, сега тестовете няма да висят на изскачащи прозорци, но все още не мога да потвърдя/чета изскачащи прозорци...


person apk    schedule 25.07.2012    source източник


Отговори (1)


Изглежда, че след като Watir щракне върху бутона, за да отвори диалоговия прозорец на javascript, той чака нещо, което никога не получава.

Решението е да щракнете върху бутона с click_no_wait. Опитайте това вместо това:

require 'watir'
b = Watir::Browser.start "www.w3schools.com/js/tryit.asp?filename=tryjs_alert"
b.maximize
b.frame(:name, "view").button(:text, "Show alert box").click_no_wait
b.javascript_dialog.button('OK').click

Актуализация: Току-що забелязах, че това е документирано в wiki Watir - http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups (вижте първия пример).

person Justin Ko    schedule 25.07.2012
comment
Да, това може да е решението... Само един малък проблем: Използването на click_no_wait срива Ruby напълно, Windows го изключва и иска да изпрати доклад за грешка на Microsoft... (Използвам XP SP3, Ruby 1.9.3p194, Watir 3.0 .0.) - person apk; 25.07.2012
comment
Използвах Win7, Ruby 1.8.7, Watir 3.0.0. - person Justin Ko; 25.07.2012
comment
След понижаване на Ruby до 1.9.2 вече не се срива при click_no_wait. Въпреки това Watir все още отказва да щракне върху изскачащ прозорец. - person apk; 25.07.2012
comment
Задайте $DEBUG=true точно преди #click_no_wait - тогава виждате ли съобщения за грешка? - person Jarmo Pertman; 25.07.2012
comment
Както току-що казах, вече няма грешка с click_no_wait. Беше коригирано чрез инсталиране на по-стара версия на Ruby (1.9.2). Но линия b.javascript_dialog.button('OK').click все още не работи. - person apk; 25.07.2012
comment
@JarmoPertman, изключението, което видях както за това, така и за файловите полета (с Ruby 1.9.3), изглежда е същото като докладваното в Проблем 31 на автоматизацията - person Justin Ko; 27.07.2012