webdriver-test непригоден для использования

На виртуальной машине (чистый, свежий сервер Ubuntu 11.04) я создал тестовый веб-сайт, как описано в Создание вашего первого приложения Yii, и теперь я хочу создать простой тест, используя webdriver-test.

Я установил правильный TEST_BASE_URL в protected/tests/WebTestCase.php и создал protected/tests/functional/MySimpleTest.php

<?php
Yii::import( 'ext.webdriver-bindings.CWebDriverTestCase' );

class MySimpleTest extends CWebDriverTestCase {

    protected function setUp() {
        parent::setUp( '192.168.57.1', 4444, 'firefox' );
    }

    public function testMySite() {
        $this->get( TEST_BASE_URL );

        $qElem = $this->findElementBy( LocatorStrategy::linkText, 'Users' );
        $this->assertNotNull( $qElem, 'There is no "Users" link!' );

        $qElem->clickAndWait();

        $this->assertTrue( $this->isTextPresent( '[email protected]' ), 'The is no "[email protected]" text on result page!' );
    }
}

Запуск выглядит так:

etam@ubuntu:/var/www/test/protected/tests$ phpunit functional/MySimpleDbTest.php
PHPUnit 3.5.15 by Sebastian Bergmann.

E

Time: 5 seconds, Memory: 5.25Mb

There was 1 error:

1) MySimpleTest::testMySite
PHPUnit_Framework_Exception: setBrowserUrl() needs to be called before start().

/opt/yii-1.1.8.r3324/framework/test/CWebTestCase.php:61
/var/www/test/protected/extensions/webdriver-bindings/CWebDriverTestCase.php:156

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

Обратите внимание, что он жалуется на setBrowserUrl() из PHPUnit_Extensions_SeleniumTestCase_Driver, который не совпадает с вызовом из CWebDriverTestCase.

Я пытался выяснить, что происходит, но это слишком сложно для меня. Похоже, что проблемы со старым и новым API селена существуют вместе, но я не уверен в этом.

Я использую:

  • Сервер Ubuntu 11.04
  • йии 1.1.8.р3324
  • веб-драйвер-тест 1.1b
  • phpunit 3.5.15 (исправлено, как описано в bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544)

Пожалуйста помоги!


person etam1024    schedule 27.09.2011    source источник
comment
У меня тоже эта проблема. Метод setBrowserUrl устанавливает свойство $baseUrl, а не свойство $browserUrl.   -  person jcfollower    schedule 15.05.2014


Ответы (1)


Вам нужно вызвать метод setBrowseUrl() сразу после метода parent::setup(), потому что selenium требует этот URL-адрес для разрешения относительных путей в ваших тестовых примерах. Таким образом, вы можете вызвать open('full.url.com/someAction') или просто open('/someAction'), и оба перейдут на одну и ту же страницу.

person markdrake    schedule 17.02.2012