我有一个基本问题,即我的selenium phpunit测试都没有通过,除非我在调试视图中手动逐步执行它们,这显然有点不方便!我从以下jar文件运行本地selenium服务器并在Zend Studio 8中执行phpunit测试。
硒 - 服务器 - 独立-2.0b2.jar
我似乎无法在Google上找到任何相关内容或在此处搜索,所以我认为我一定做错了。这是我从大多数测试方法的开始调用以便登录的示例方法。
protected function login() {
$this->open ( "/login.php" );
try {
$this->waitForPageToLoad ( "30000" );
$this->type ( "username", self::MA_USERNAME );
$this->type ( "password", self::MA_PASSWORD );
$this->click ( "//input[@value=' Login ']" );
$this->waitForPageToLoad ( "60000" );
$this->assertFalse( $this->isTextPresent( "Login details supplied are invalid." ) );
} catch ( PHPUnit_Framework_AssertionFailedError $e ) {
array_push ( $this->verificationErrors, $e->toString () );
}
}
如果我只是按'运行'然后让它去,那么它甚至没有填写字段或提交表单,所以我假设它没有等待加载页面尽管有waitForPageToLoad()呼叫。逐步完成手动操作。谁能建议如何解决这个问题?感谢。
答案 0 :(得分:0)
似乎Selenium正在执行快速命令。我遇到了同样的问题 我解决问题的方法是使用函数 setSpeed($ timeInMilliSec)
在php中:
$this->setSpeed('120');
所以在你的函数中,试试这个:
protected function login() {
$this->open ( "/login.php" );
$this->setSpeed('120');
try {
$this->waitForPageToLoad ( "30000" );
$this->type ( "username", self::MA_USERNAME );
$this->type ( "password", self::MA_PASSWORD );
$this->click ( "//input[@value=' Login ']" );
$this->waitForPageToLoad ( "60000" );
$this->assertFalse( $this->isTextPresent( "Login details supplied are invalid." ) );
} catch ( PHPUnit_Framework_AssertionFailedError $e ) {
array_push ( $this->verificationErrors, $e->toString () );
}
}
希望这可以解决您的问题