FireWatir и jQuery
-
20-09-2019 - |
Вопрос
после использования этого превосходного программного обеспечения под названием FireWatir я задаюсь вопросом, есть ли способ интегрировать jQuery-selector-magic в мой тест.
Моя первая попытка - использовать firewatir's js_eval()
метод, подобный этому
require 'rubygems'
require 'firewatir'
f = FireWatir::Firefox.new
f.js_eval("alert(42);")
Единственное, что я получаю, это
JsshSocket::Ошибка JSReferenceError:оповещение не определено
что довольно странно, потому что другие выражения, такие как
f.js_eval("document.location.toString();")
Работайте как заклинание!
У кого-нибудь есть подсказка?
Спасибо и приветствует,
Джо
Решение 2
Ладно, ребята,
я заставил jQuery работать с большим количеством исследований, и я надеюсь, что это поможет вам, если у вас возникнут подобные проблемы:
firefox.js_eval("var target = getWindows()[0]; target.content.jQuery('#selector').toggle()")
Что мне нужно было сделать, так это явно выбрать окно, в котором я работаю, и в его содержимом доступен jQuery, и можно использовать все его великолепие!;)
Приветствую Джо
Другие советы
Если вы хотите использовать его так же, как обычно, с $, вам нужно обернуть его в функцию, которая будет запускать его в контексте документа Windows.
var win = new getWindows()[0].content;
var doc = browser.contentDocument;
$ = function(selector) {
win.content.jQuery(selector, doc);
}
Из самого FireWatir Вики:
FireWatir преобразует код в эквивалент JavaScript, который затем передается на сервер JSSh и выполняется в соответствии с DOM страницы, загруженной в браузер.
Тот Самый alert
функция принадлежит к window
объект браузера, а не DOM страницы.Таким образом, вы можете вызвать оповещение типа window.alert('hello dollly')
.
FireWatir создает сеанс JSSh, который отправляет ваш js_eval
к DOM, поэтому не может взаимодействовать с window
.