Javascript Codeception中的jQuery未定义

Javascript Codeception中的jQuery未定义,javascript,php,jquery,selenium,codeception,Javascript,Php,Jquery,Selenium,Codeception,我正在使用Codeception为依赖jQuery的应用程序编写验收测试。我让WebDriver打开FireFox并登录。JavaScript已启用,我可以执行$I->executeJS('returndocument.getElementById(“someelement”)。就我个人而言,我根本无法访问jQuery。我知道它已加载,因为页面上的jQuery插件正在工作。我需要和你互动 到目前为止,我已经尝试了两种方法。第一个是在DOM就绪时创建一个带有ID的隐藏div。然后在我的测试中,我会

我正在使用Codeception为依赖jQuery的应用程序编写验收测试。我让WebDriver打开FireFox并登录。JavaScript已启用,我可以执行
$I->executeJS('returndocument.getElementById(“someelement”)。就我个人而言,我根本无法访问jQuery。我知道它已加载,因为页面上的jQuery插件正在工作。我需要和你互动

到目前为止,我已经尝试了两种方法。第一个是在DOM就绪时创建一个带有ID的隐藏div。然后在我的测试中,我会这样做:

public function foo(AcceptanceTester $I) {
    $I->waitForElement('#dom-ready');
    $var = $I->executeJS('return jQuery.fn.jquery');
    var_dump($var);
}
该var_转储应返回jQuery版本。它返回空值

我也试过:

public function foo(AcceptanceTester $I) {
    $I->wait(20); // Some really high number of seconds
    $var = $I->executeJS("return window.jQuery != undefined && jQuery.active == 0");
    var_dump($var);
}
var_dump应该是真的。这总是假的。我完全不知所措。我在这里看不到什么

这是我的
acceptance.suite.yaml
文件

class_name: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'http://site.local/' # put your local url
            browser: firefox
            capabilities:
                javascriptEnabled: true
                handlesAlerts: true
                webStorageEnabled: true
        - \Helper\Acceptance

明白了!问题确实出在Firefox上,而不是Selenium。感谢Florent B提出壁虎河可能成为问题的想法。简而言之,您需要至少FF>=48才能访问jQuery


希望这对别人有帮助。我花了将近一个星期的时间来解决这个问题。

您是否尝试过使用
$
速记<代码>返回!window.$| | window.$.active==0
Yup,也不起作用。此外,如果没有定义jQuery,那么速记肯定不会被定义。我曾经遇到过这样的情况,
jQuery
$
名称空间中是自包含的。这也可能是由于壁虎河的问题。试试这个
var w=window.wrappedJSObject | | window;回来!w、 $| | w.$激活<1为我返回false。