黄瓜和jstree

发布于 2024-11-06 15:08:08 字数 343 浏览 4 评论 0原文

我正在构建一个 Rails 应用程序,其中有一个带有 jstree 对象的页面,并使用 Cucumber 进行集成测试。但我很沮丧,因为我正在尝试编写一个黄瓜步骤(使用水豚/硒作为网络驱动程序),该步骤将单击以展开 jstree 的节点之一。我一生都不知道该怎么做!在带有加号/减号的 jstree-icon 对象上执行“单击”不会执行任何操作。有什么想法吗?

更新:这是一个示例树,我可以做得非常简单,它有一棵树。 http://jsfiddle.net/aV62w/ - 现在,我需要模拟点击加号的行为单击 Node B 文件夹,将其展开。

I'm building a rails app that has a page with a jstree object on it, and am using cucumber for my integration testing. I'm frustrated though, because I'm trying to write a cucumber step (using capybara/selenium for the web driver) that will click to expand one of the nodes of the jstree. I, for the life of me, cannot figure out how to do this! Executing 'click' on the jstree-icon object with the plus/minus sign in it does nothing. Any ideas?

UPDATED: Here is an example tree, as simple as I can make it pretty much, that has a tree. http://jsfiddle.net/aV62w/ - now, I need to simulate the act of clicking on the plus by the Node B folder, to expand it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花期渐远 2024-11-13 15:08:08

您可以利用 jstree 的方法 与树进行交互 - 为此,您需要在节点上设置 id,以便 jstree 可以引用它们。

jQuery

// toggle_node, or open_node, or close_node
$('#tree').jstree('toggle_node', '#node_b');

小提琴: http://jsfiddle.net/aV62w/1/

You can interact with the tree by utilising jstree's methods -- for this to work you need to set id's on the nodes, so they can be referenced by jstree.

jQuery

// toggle_node, or open_node, or close_node
$('#tree').jstree('toggle_node', '#node_b');

Fiddle: http://jsfiddle.net/aV62w/1/

我早已燃尽 2024-11-13 15:08:08

html-unit Web 驱动程序(Java 中)附带一个executeScript,可在 Web 步骤中使用。我用 cucumber 为 Grails 项目做了这个(它使用 groovy)。

Then(~"I open jstree folder \"(.*)\"") { String folderName ->
        js = """
           var obj = \$('div.main a:contains("' + arguments[0] +'")').parent();
           var tree = obj.parents('div.jstree-0');
           tree.jstree('toggle_node',obj);
        """
        browser.executeScript(js,folderName)
        Thread.sleep(5000); // wait for ajax call, so next step will have tree loaded
}

请注意,所有 DOM 查找和遍历都是在 JS 中使用 JQuery 完成的,不需要附加 ID - 当然可以改进导航:)
希望有帮助。

The html-unit web driver (in Java) comes with a executeScript, which can be used in a web step. I did this for a Grails project with cucumber (it uses groovy)

Then(~"I open jstree folder \"(.*)\"") { String folderName ->
        js = """
           var obj = \$('div.main a:contains("' + arguments[0] +'")').parent();
           var tree = obj.parents('div.jstree-0');
           tree.jstree('toggle_node',obj);
        """
        browser.executeScript(js,folderName)
        Thread.sleep(5000); // wait for ajax call, so next step will have tree loaded
}

Note that all DOM finding and traversing is done in JS with JQuery and there is no need to attach an ID - navigation can be improved, of course :)
Hope it helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文