2014-01-21 3 views
0

мне нужно выполнить следующие оценки функции, которые должны принимать СпискаАргументыЕсть ли способ, чтобы предоставить аргументы «Execute Javascript» в robotframework

| @ {} = список аргументы | arg1 | arg2 | arg3 |

| Выполнение Javascript | var header = document.evaluate ('// span [contains (text(), «Управление профилями VLAN»)]/follow :: table [содержит (@class, «x-grid»)]/tbody/descendant :: tr/descendant :: td/descendant :: * [содержит (текст(), «AccessVLAN»)] ', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) .singleNodeValue; return header.textContent; |

Здесь мне нужно передать @ {argList} функции javascript.

+0

Обратите внимание, что контекст контекста для JS - это объект Selenium, поэтому вместо вызова 'document.evaluate' вы можете вызвать' window.document.evaluate'. См. Http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html#Execute%20Javascript – Harri

+0

Да, согласен, это помогает! –

ответ

0

Если ваши переменные являются простыми типами, вы можете просто внедрить их в скрипт, Robot Framework расширит их до фактического вызова Execute Javascript.

${argList}= Create List Sally 45 
Execute Javascript alert('Hello ${argList[0]}, you are ${argList[1]} years old'); 

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

${argList}= Create List Sally 45 
${s2l}= Get Library Instance Selenium2Library 
Call Method ${s2l._current_browser()} execute_script alert('Hello ' + arguments[0] + ', you are ' + arguments[1] + ' years old'); @{argList} 

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

+0

Это было полезно, Btw У меня проблема с выполнением javascript и document.evaluate(), поскольку она терпит неудачу с сложным xpath .. любым способом разобраться в этом? –

+0

Вы можете использовать метод _element_find Selenium2Library с некоторым XPath для получения ссылки на WebElement и передать эту ссылку в качестве аргумента JavaScript. Этот подход позволяет избежать document.evaluate(), который не будет работать для IE. – ombre42

Смежные вопросы