php - 尝试使用 Codeception 和 Yii2 接受 native js 弹出窗口时出错

标签 php testing yii2 codeception acceptance-testing

我正在尝试关闭由 Yii2 生成的用于确认删除记录的确认 js 弹出窗口,在本例中是用户,使用 Codeception 和他的。

错误如下:

[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"}'

下面是我的代码:

<?php 
$username = 'foobar';
$email = 'foo@bar.com';

$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));

最佳答案

据我所知,下面的代码告诉 Codeception 完全改变浏览器窗口。我实际上只是用这个确切的代码块编写了一个测试来更改浏览器窗口。也许尝试删除它或评论它并尝试再次运行测试?据我所知,弹出部分看起来还不错

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

关于php - 尝试使用 Codeception 和 Yii2 接受 native js 弹出窗口时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766035/

相关文章:

testing - QTP 与 Selenium - 比较

yii2 - 在模型表单的 yii2 中创建自定义字段

php - 二维数组中的所有可能性

php - 我可以显示没有扩展名的图像吗

c# - 如何为 WPF 命令绑定(bind)编写测试?

php - 如何通过 Yii 2 将最后插入的 id 存储在变量中

php - Yii2 我们可以更改 Assets 目录位置吗?

php - 如何从两个mysql表中选择不匹配的行

php - 在 SELECT 查询 (MySql) 中生成重复行

angular - 如何运行在后台运行 HTMLElement 的 focus() 方法的 Karma jasmine 测试?