我正在为 Zend 应用程序编写功能测试。我使用 PHPUnit 和这个包装器运行它们:https ://github.com/chibimagic/WebDriver-PHP
我在本地(v2.19.0)从 jar 文件运行 selenium 独立服务器。我在这个应用程序中使用了很多 js 和 ajax,所以我在我的 FunctionalTestCase 类中创建了一个 waitForAjax 函数,这样我就可以等到所有数据都正确加载。它使用 $.active,因为我使用的是 jQuery ajax 函数。该函数如下所示:
public function waitForAjax($timeout = 10) {
sleep(1);
for($i = 0 ; $i < $timeout - 1 ; $i++) {
$active = $this->getJsResult('return $.active;');
if($active > 0) {
sleep(1);
}else {
break;
}
}
}
函数 getJsResult 从 WebDriver 包装器执行 execute_js_sync 并从 Selenium 响应中获取结果。
我的问题如下: selenium 在站点上执行 js 时随机挂起。有时它几乎立即返回,但大多数时候它只是停留在执行脚本上。这是服务器的唯一输出:
11:58:48.386 INFO - Executing: [execute script: return $.active;, []] at URL: /session/1334915841900/execute)
最困扰我的是为什么会如此随机发生?
我真的可以在这里使用一些帮助。
干杯, Maciej