我有一个非常基本的问题,除非我在调试视图中手动单步执行,否则我的 selenium phpunit 测试都不会通过,这显然有点不便!我正在从以下 jar 文件运行本地 selenium 服务器,并从 Zend Studio 8 中执行 phpunit 测试。
selenium-server-standalone-2.0b2.jar
我似乎无法在谷歌上或通过此处搜索找到任何相关内容,所以我认为我一定做错了什么。这是我从大多数测试方法开始调用的一个示例方法,以便登录。
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() 调用,但它还没有等待页面加载。手动单步执行效果非常好。谁能建议如何解决这个问题?谢谢。
看起来 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 () );
}
}
希望这能解决您的问题