有没有办法在robotframework中为“Execute Javascript”提供参数

时间:2014-01-21 11:28:43

标签: javascript robotframework

我需要执行以下的evaluate函数,该函数应该采用参数列表

|@{argList}= | arg1 | arg2 | arg3 |

| Execute Javascript | var header=document.evaluate('//span[contains(text(),"Manage VLAN Profiles")]/following::table[contains(@class,"x-grid")]/tbody/descendant::tr/descendant::td/descendant::*[contains(text(),"AccessVLAN")]',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
return header.textContent;  |

这里我需要将@ {argList}传递给javascript函数。

1 个答案:

答案 0 :(得分:1)

如果您的变量是简单类型,您可以将它们嵌入到脚本中,Robot Framework将在实际调用Execute Javascript之前扩展它们。

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

如果上述内容对您不起作用,并且您希望能够直接传递参数,则可以访问WebDriver实例。您可以引用通过名为arguments的数组传递的参数。

${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上申请。请注意,执行此操作时,on failure failure机制将不起作用。