Не удается получить селен в ожидании - тесты работают только при пошаговом выполнении вручную - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть довольно фундаментальная проблема, что ни один из моих тестов на селен phpunit не проходит, если я не провожу их вручную в режиме отладки, что, очевидно, немного неудобно!Я запускаю локальный сервер селена из следующего jar-файла и выполняю тест phpunit из Zend Studio 8.

selenium-server-standalone-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 () );
    }
}

Если я просто нажму 'run' и отпущу его, он даже не заполнит поляили отправьте форму, так что я предполагаю, что она не дождалась загрузки страницы, несмотря на вызов waitForPageToLoad ().Прохождение вручную работает отлично.Кто-нибудь может подсказать как это исправить?Спасибо.

1 Ответ

0 голосов
/ 16 марта 2012

Похоже, что 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 () );
    }
}

Надеюсь, это решит вашу проблему

...