【问题标题】:Is there a way to provide arguments to "Execute JavaScript" in Robot Framework?有没有办法在机器人框架中为“执行 JavaScript”提供参数?
【发布时间】:2014-02-10 23:18:37
【问题描述】:

我需要执行以下需要一个参数列表的评估函数

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

【问题讨论】:

标签: javascript robotframework


【解决方案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 机制将不起作用。

【讨论】:

  • 这很有帮助,顺便说一句,我在执行 javascript 和 document.evaluate() 函数时遇到问题,因为它因复杂的 xpath 而失败.. 有什么办法可以解决这个问题?
  • 您可以使用 Selenium2Library 的 _element_find 方法和一些 XPath 来获取 WebElement 引用并将该引用作为参数传递给 JavaScript。这种方法避免了不适用于 IE 的 document.evaluate()。
  • 任何人都知道与 appium 库相同的事情吗?它不工作
猜你喜欢
  • 2019-01-14
  • 2015-02-18
  • 2014-05-16
  • 1970-01-01
  • 2020-12-13
  • 2018-08-06
  • 2017-07-05
  • 1970-01-01
  • 2018-10-18
相关资源
最近更新 更多