gpt4 book ai didi

javascript - Codeception 中的 jQuery 未定义

转载 作者:搜寻专家 更新时间:2023-10-31 21:51:50 24 4
gpt4 key购买 nike

我正在使用 Codeception 为依赖于 jQuery 的应用程序编写验收测试。我让 WebDriver 打开 FireFox 并登录。 JavaScript 已启用,我可以执行 $I->executeJS('return document.getElementById("some-element")'); 返回元素。对于我的生活,我根本无法访问 jQuery。我知道它已加载,因为页面上的 jQuery 插件正在运行。我需要和 then 互动。

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

public function foo(AcceptanceTester $I) {
$I->waitForElement('#dom-ready');
$var = $I->executeJS('return jQuery.fn.jquery');
var_dump($var);
}

var_dump 应该返回 jQuery 版本。它返回 null。

我也试过这个:

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 提出 geckodriver 可能是问题所在的想法。简短的回答是您至少需要 FF >= 48 才能访问 jQuery。

https://github.com/mozilla/geckodriver/issues/108

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

关于javascript - Codeception 中的 jQuery 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40403680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com