我正在使用与僵尸驱动程序的behat来测试我的应用程序。现在我试图点击一个元素(td),以激发一个ajax请求。但是当点击这个元素时,我收到错误:
处理活动时出错'点击' (贝哈特\水貂\异常\ DriverException
我使用的代码来自this thread
在互联网上我找不到有错误信息的人,所以我不知道如何解决这个问题。
我想点击的HTML如下所示:
<td value="2" onclick="switchStatus(this.id); updateScores();; return false;" id="37_12_2">2</td>
这些javascript函数对服务器执行ajax调用,对保存的结果不执行任何操作(无成功方法)。
我使用的测试功能如下:
/**
* @Given /^I click td "([^"]*)"$/
*/
public function iClickTd($id)
{
$locator = "#$id";
$element = $this->getSession()->getPage()->find('css', $locator);
if (null === $element) {
throw new \InvalidArgumentException(sprintf('Could not evaluate CSS selector: "%s"', $locator));
}
$element->click();
$this->getSession()->wait(1000);
}
在测试中我有:
And I click td "37_12_2"
behat.yml:
default:
suites:
default:
contexts:
- FeatureContext:
- http://localhost/
extensions:
Behat\MinkExtension\ServiceContainer\MinkExtension:
base_url: http://localhost/
sessions:
default:
goutte: ~
javascript:
zombie:
node_modules_path: '/usr/lib/node_modules/'
二手版本:
有谁知道出了什么问题,以及如何让这个功能发挥作用?
答案 0 :(得分:1)
实际问题是错误的ajax请求。使用真正的webbroser ajax调用是正确的,但使用zombieJS这个调用转到了一个错误的URL。
当其他人有相同的异常时,您可以通过更改ZombieDriver.php中的以下部分来查看您的真实问题: 从:
$out = $this->server->evalJS($js);
if (!empty($out)) {
throw new DriverException(sprintf("Error while processing event '%s'", $event));
}
要:
$out = $this->server->evalJS($js);
if (!empty($out)) {
echo $out;
throw new DriverException(sprintf("Error while processing event '%s'", $event));
}
$ out包含ajax调用的实际错误消息。