是否有一种方法可以为“提供参数”;执行JavaScript";在机器人框架中?

是否有一种方法可以为“提供参数”;执行JavaScript";在机器人框架中?,javascript,robotframework,Javascript,Robotframework,我需要执行下面的evaluate函数,该函数应该采用argumentlist |@{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/descenda

我需要执行下面的evaluate函数,该函数应该采用argumentlist

|@{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函数。

如果变量是简单类型,您可以将它们嵌入脚本中,Robot框架将在实际调用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}

如果需要此功能,应在上请求。请注意,执行此操作时,on failure机制将不起作用。

请注意,JS的默认上下文是Selenium对象,因此您可能需要调用
window.document.evaluate,而不是调用
document.evaluate
。看,是的,同意,这很有帮助!!这很有帮助,顺便说一句,我在执行javascript和document.evaluate()函数时遇到问题,因为它使用复杂的xpath失败。。有什么办法可以解决这个问题吗?您可以使用Selenium2Library的_element_find方法和一些XPath来获取WebElement引用,并将该引用作为参数传递给JavaScript。这种方法避免了不适用于IE的document.evaluate()?它不起作用