jQuery를 사용하는 앱에 대한 수용 테스트를 작성하는 데 Codeception을 사용하고 있습니다. WebDriver에서 FireFox를 열고 로그인하십시오. JavaScript가 활성화되어 있으며 요소를 반환하는 $I->executeJS('return document.getElementById("some-element")');
을 수행 할 수 있습니다. 나에게는 jQuery에 전혀 액세스 할 수 없다. 페이지의 jQuery 플러그인이 작동하기 때문에로드 된 것을 압니다. 나는 그 때와 상호 작용할 필요가있다.jQuery in Codeception이 정의되지 않았습니다.
지금까지 두 가지 방법을 시도했습니다. 첫 번째는 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 사실이되어야한다. 그것은 항상 거짓입니다. 나는 완전히 상실감이있다. 나는 무엇을 여기에서 보지 않고 있냐?
여기
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
'$'속기를 사용해 보셨습니까? 'return! window. $ || 윈도우. $. 활성 == 0' –
그래, 작동하지 않습니다. 게다가, jQuery가 정의되어 있지 않다면, 속기는 확실히되지 않을 것이다. –
JQuery가'$'네임 스페이스에 자체적으로 포함되어있는 경우가있었습니다. 그것은 또한 geckodriver에서 문제로 인해 수 있습니다. 이것을 시도해 보라. var w = window.wrappedJSObject || 창문; 돌아오다 .w. $ || w. $. 활성 <1;' –