2015-04-21 29 views
11

Próbuję zamknąć potwierdzenie js popup generowane przez Yii2 w celu potwierdzenia usunięcia rekordu, w tym przypadku użytkownika, z Codeception i jego.Błąd podczas próby zaakceptowania rodzimego js popup z Codeception i Yii2

Powyżej jest błąd:

[WebDriverException] JSON decoding of remote response failed. Error code: 4 The response: 'Invalid Command Method - Request => {"headers":{"Accept":"application/json","Content-Length":"0","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:4444"},"httpVersion":"1.1","method":"GET","url":"/alert_text","urlParsed":{"anchor":"","query":"","file":"alert_text","directory":"/","path":"/alert_text","relative":"/alert_text","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/alert_text","queryKey":{},"chunks":["alert_text"]},"urlOriginal":"/session/cac855f0-e7f8-11e4-ae75-8baa74cf41b1/alert_text"}'

Powyżej jest mój kod:

<?php 
$username = 'foobar'; 
$email = '[email protected]'; 

$I = new AcceptanceTester($scenario); 
$I->wantTo('Check that users can update their passwords'); 

$I->haveInDatabase('user', array('username' => $username, 'email' => $email)); 
$id = $I->grabFromDatabase('user', 'id', array('username' => $username, 'email' => $email)); 

$I->amOnPage("/backend/web/index.php/user/$id"); 
$I->see('Borrar'); 
$I->click('Borrar'); 

$I->wait(3); 
## This line throws the error 
$I->seeInPopup('eliminar este usuario'); 
## Trying to change to the popup. This doesn't throw any error 
$I->executeInSelenium(function (Webdriver $webdriver) { 
    $handles=$webdriver->getWindowHandles(); 
    $last_window = end($handles); 
    $webdriver->switchTo()->window($last_window); 
}); 
$I->pressKey('body', \WebDriverKeys::ENTER); 
## This throwed the error before 
$I->acceptPopup(); 
$I->wait(1); 

$I->seeInCurrentUrl('user/list'); 
$I->dontSeeInDatabase('user', array('username' => $username, 'email' => $email)); 

Odpowiedz

0

O ile wiem poniższy kod mówi Codeception aby całkowicie zmienić okno przeglądarki. Dosłownie napisałem test z tym właśnie blokiem kodu, aby zmienić okno przeglądarki. Być może spróbuj usunąć to lub skomentować i spróbować ponownie uruchomić test? Części wyskakujące wyglądają dobrze, o ile widzę, to:

$I->executeInSelenium(function (Webdriver $webdriver) { 
    $handles=$webdriver->getWindowHandles(); 
    $last_window = end($handles); 
    $webdriver->switchTo()->window($last_window); 
});