FireWatir и JQuery - PullRequest
       12

FireWatir и JQuery

3 голосов
/ 16 февраля 2010

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

Моя первая попытка - использовать js_eval() метод firewatir, подобный этому

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

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

JsshSocket :: JSReferenceError: оповещение не определено

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

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

Работай как шарм!

Кто-нибудь с подсказкой?

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

Джо

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

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

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

$ = function(selector) {

  win.content.jQuery(selector, doc);

}

веб-дизайн в Чикаго

1 голос
/ 18 февраля 2010

Ладно, ребята,

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

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

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

Привет Джо

0 голосов
/ 17 февраля 2010

Из FireWatir Wiki :

FireWatir преобразует код в эквивалент JavaScript, который затем передается на сервер JSSh и выполняется для DOM страницы, загруженной в браузер.

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

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

...