2010-02-16 6 views
3

после использования этого превосходного мира программного обеспечения под названием FireWatir, интересно, есть ли способ интегрировать jQuery-selector-magic в мой тест.FireWatir и jQuery

Моя первая попытка использовать js_eval() метод firewatir как этого

require 'rubygems' 
require 'firewatir' 
f = FireWatir::Firefox.new 
f.js_eval("alert(42);") 

Единственное, что я получаю это

JsshSocket::JSReferenceError: alert is not defined

который является своего рода странно, потому что другие выражения, как

f.js_eval("document.location.toString();") 

Работайте как очарование!

Кто-нибудь с намеком?

Спасибо и приветствует,

Джо

+0

Я хотел бы предложить вам этот пост, чтобы http://groups.google.com/group/watir-general/ тоже. –

ответ

1

Ладно люди,

я получил JQuery, работающих с большим количеством исследования, и я надеюсь, что это будет помочь вам, если у вас есть подобные проблемы:

firefox.js_eval("var target = getWindows()[0]; target.content.jQuery('#selector').toggle()") 

Что я должен был сделать, чтобы выбрать окно, в котором я работаю явно и внутри его содержимого, доступно jQuery, и каждый может использовать всю свою удивительность! ;)

Привет Джо

+1

Sweet !! Поэтому мне кажется, что вся команда напрямую отправляется на сеанс JSSh, а не в DOM. Это аккуратно. Может быть, это будет более полезно что-то вроде этого: firefox.js_eval ("var $ = getWindows() [0] .content.jQuery") '(не знаю, будет ли это работать). И следующую команду просто введите их как нормальный jQuery. – guzart

+0

да звучит хорошо! Я дам ему попробовать по понедельникам :) – xijo

0

От FireWatir Wiki:

FireWatir translates code into a JavaScript equivalent, which is then transmitted to the JSSh server and executed against the DOM of the page loaded in the browser.

alert функция принадлежит window объекта браузера, а не DOM страницы. Таким образом, вы можете вызвать оповещение, как window.alert('hello dollly').

FireWatir создает сеанс JSSh, который отправляет js_eval в DOM, поэтому не может взаимодействовать с window.

+0

Привет и спасибо за ваш ответ. С помощью ребята на канале firewatir irc я смог получить предупреждение, используя window.alert, но конечная цель, jQuery, остается нерешенной:/Я обновляю свой пост сегодня. – xijo

+0

Если у вас 'window.alert',' 'window.jQuery' не работает? – guzart

+0

Нет window.jQuery не работает, но есть обходное решение, которое я опубликовал как ответ. Спасибо за вашу помощь! – xijo

2

Если вы хотите использовать его, как вы обычно с $ вам нужно обернуть его в функцию, которая будет выполняться его контексте документа вдовам.

var win = new getWindows()[0].content; 
var doc = browser.contentDocument; 

$ = function(selector) { 

    win.content.jQuery(selector, doc); 

} 

chicago web design