如何在Selenium测试中注入JS函数?

时间:2011-09-06 14:07:07

标签: selenium selenium-webdriver

我正在使用Selenium客户端驱动程序2.5.0和WebBackedSeleniumDriver。我想在我的测试中注入一个Javascript函数,但是遇到了一些麻烦。这是我如何初始化我的驱动程序......

    final FirefoxDriver driver = new FirefoxDriver();
    selenium = new WebDriverBackedSelenium(driver, baseUrl); 

但是下面的第二行会抛出“'inc'未定义错误。”

    selenium.getEval("function inc(x) { return x + 1; }); ");
    String incResult = selenium.getEval("inc(5);");

我是如何成功注入Javascript函数以便在其他测试中使用的?

谢谢, - 戴夫

2 个答案:

答案 0 :(得分:3)

请尝试稍微改变如下。

    selenium.getEval("inc = function(x) { return x + 1; }");
    String incResult = selenium.getEval("inc(5);");

答案 1 :(得分:0)

根据selenium docs(Selenium Driver .NET Docs):

  

在当前测试窗口的主体中创建一个新的“script”标记,并将指定的文本添加到命令的主体中。以这种方式运行的脚本通常比使用Selenium的“getEval”命令执行的脚本更容易调试。请注意,这些脚本标记中抛出的JS异常不是由Selenium管理的,因此如果脚本有可能抛出异常,您应该将脚本包装在try / catch块中。

因此,我对答案的唯一改变是更改 getEval ,转而使用 runScript 方法。