Огурец и дерево - PullRequest
       12

Огурец и дерево

1 голос
/ 12 мая 2011

Я создаю приложение rails, на котором есть страница с объектом jstree, и использую огурец для моего интеграционного тестирования. Однако я разочарован, потому что я пытаюсь написать шаг огурца (используя капибару / селен для веб-драйвера), который щелкнет, чтобы развернуть один из узлов jstree. Я, по жизни, не могу понять, как это сделать! Выполнение 'click' на объекте jstree-icon со знаком плюс / минус ничего не дает. Есть идеи?

ОБНОВЛЕНО: Вот дерево примеров, настолько простое, насколько я могу сделать это, у которого есть дерево. http://jsfiddle.net/aV62w/ - теперь мне нужно смоделировать процесс нажатия на плюс в папке Node B., чтобы развернуть его.

Ответы [ 2 ]

0 голосов
/ 14 мая 2012

Веб-драйвер html-модуля (на Java) поставляется с executeScript, который можно использовать на веб-шаге. Я сделал это для проекта 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 - навигация, конечно, может быть улучшена :) Надеюсь, это поможет.

0 голосов
/ 12 мая 2011

Вы можете взаимодействовать с деревом, используя методы jstree - чтобы это работало, вам нужно установить идентификаторы на узлах, чтобы на них могла ссылаться jstree.

jQuery

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

Скрипка: http://jsfiddle.net/aV62w/1/

...