【问题标题】:FireWatir and jQueryFireWatir 和 jQuery
【发布时间】:2023-04-02 21:14:02
【问题描述】:

在使用了这款名为 FireWatir 的出色软件后,我想知道是否有办法将 jQuery-selector-magic 集成到我的测试中。

我的第一次尝试是像这样使用firewatir的js_eval()方法

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

我唯一得到的是一个

JsshSocket::JSReferenceError: 未定义警报

这有点奇怪,因为其他表达方式像

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

像魅力一样工作!

有人有提示吗?

谢谢你,

【问题讨论】:

标签: jquery ruby-on-rails cucumber watir firewatir


【解决方案1】:

如果您想像通常使用 $ 一样使用它,则需要将其包装在一个函数中,该函数将在寡妇文档的上下文中运行它。

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

$ = function(selector) {

  win.content.jQuery(selector, doc);

}

chicago web design

【讨论】:

    【解决方案2】:

    好吧,伙计们,

    我对 jQuery 进行了大量研究,如果您遇到类似问题,我希望这对您有所帮助:

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

    我要做的是明确选择我正在工作的窗口,并且在其内容中 jQuery 可用,并且可以使用它的所有功能! ;)

    问候 乔

    【讨论】:

    • 甜!!所以在我看来,所有命令都直接发送到 JSSh 会话,而不是完全发送到 DOM。那很整齐。也许像firefox.js_eval("var $ = getWindows()[0].content.jQuery")这样的东西会更有用(不知道这是否可行)下一个命令,只需像普通的jQuery一样键入它们。
    【解决方案3】:

    来自FireWatir Wiki

    FireWatir 将代码转换为等效的 JavaScript,然后将其传输到 JSSh 服务器并针对浏览器中加载的页面的 DOM 执行。

    alert 函数属于浏览器的window 对象,而不是页面的 DOM。因此,您可以拨打window.alert('hello dollly') 之类的警报。

    FireWatir 创建一个 JSSh 会话,将您的 js_eval 发送到 DOM,因此无法与 window 交互。

    【讨论】:

    • 您好,感谢您的回答。在 firewatir irc 频道的帮助下,我能够通过使用 window.alert 获得警报 - 但最终目标 jQuery 仍未解决:/ 我今天会更新我的帖子。
    • No window.jQuery 不起作用 - 但我发布了解决方法作为答案。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 2011-08-28
    • 2013-03-17
    • 1970-01-01
    • 2011-03-25
    • 2011-06-27
    • 2010-09-13
    • 2011-08-10
    相关资源
    最近更新 更多