Codeception验收测试:如何测试AJAX请求?

Codeception验收测试:如何测试AJAX请求?,ajax,codeception,Ajax,Codeception,我使用codeception在一个ajax页面上进行测试,在该页面中,我单击按钮,在执行ajax请求后会显示某种文本 $I->amOnPage('/clickbutton.html'); $I->click('Get my ID'); $I->see('Your user id is 1', '.divbox'); 如您所见,测试的工作方式应该是返回“您的用户id为{$id}”(在本例中,id为1),并用文本更新div框。然而,它根本不起作用,相反,测试显示div框是空的。我

我使用codeception在一个ajax页面上进行测试,在该页面中,我单击按钮,在执行ajax请求后会显示某种文本

$I->amOnPage('/clickbutton.html');
$I->click('Get my ID');
$I->see('Your user id is 1', '.divbox');

如您所见,测试的工作方式应该是返回“您的用户id为{$id}”(在本例中,id为1),并用文本更新div框。然而,它根本不起作用,相反,测试显示div框是空的。我做错了什么?如何使用codeception测试AJAX请求

您确定在检查div时您的请求已完成吗?尝试在发送请求后添加一点等待:

$I->amOnPage('/clickbutton.html');
$I->click('Get my ID');

$I->wait(1); //add this

$I->see('Your user id is 1', '.divbox');
您还可以使用以下选项:

$I->click('#something');
$I->waitForText('Something that appears a bit later', 20, '#my_element');
20
=超时(以秒为单位),给它一些合理的值


它更灵活一点,而不是像
$I->wait(X),因为它们通常比在几秒钟内等待它们要快得多。例如,如果你有很多元素需要“等待”,比如说15-20,那么你的测试将花费15-20秒“等待”,而实际操作可能总共在1-2秒内完成。在许多测试中,这会显著增加构建时间,这是。。。不好:)

使用WebDriver模块。