【问题标题】:PHPUnit-Selenium2: errors when using execute methodPHPUnit-Selenium2:使用执行方法时出错
【发布时间】:2017-04-22 07:24:10
【问题描述】:

在使用 PhpUnit 及其 Selenium2 扩展生成验收测试时,我想使用 PHPUnit_Extensions_Selenium2TestCase 类中的 execute 方法来执行 Javascript 代码以检查文档是否准备好。

如果我执行这个测试:

$this->waitUntil(function (LoginTest $driver) {
    if ( $driver->execute( 'return document.readyState;' ) == 'complete' ) {
        return true;
    }
    return null;
}, 10000);

我收到以下错误:

InvalidArgumentException: The JSON parameters must be an array, or a NULL value in case they are not required.

然后,看到它实际上需要一个数组,我尝试了:

$this->waitUntil(function (LoginTest $driver) {
    if ( $driver->execute( ['return document.readyState;'] ) == 'complete' ) {
        return true;
    }
    return null;
}, 10000);

现在我遇到了另一个错误:

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: java.util.ArrayList cannot be cast to java.util.HashMap

我应该如何调用执行方法?

【问题讨论】:

    标签: javascript selenium selenium-webdriver phpunit


    【解决方案1】:

    查看https://github.com/giorgiosironi/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php#L107execute方法的测试用例,发现调用execute的正确方法是:

    $this->waitUntil(function (LoginTest $driver) {
        if ( $driver->execute( [
                'script' => 'return document.readyState;',
                'args' => [] 
            ] ) == 'complete' ) {
            return true;
        }
        return null;
    }, 3000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-16
      • 2014-08-09
      • 2015-07-01
      • 2014-11-16
      • 2013-06-14
      • 2012-05-24
      • 2015-09-29
      • 1970-01-01
      相关资源
      最近更新 更多