2016-12-21 2 views
0

Я пытаюсь создать тестовый костюм для проекта php с использованием phpunit и phpunit-selenium. В моем архиве композитора У меня естьSelenium with PHPUnit не загружается страница

"require-dev": { 
    "phpunit/phpunit": "^5.7", 
    "phpunit/phpunit-selenium": "^3.0" 
} 

Установленная версия PHPUnit является 5.7.4 Я использую Селен-серверный автономный-3.0.1.jar в качестве сервера селена. Я запустить сервер с Java -Dwebdriver.gecko.driver = "C: \ Харлан \ Селен \ geckodriver.exe" -jar Селен-сервер автономного-3.0.1.jar

В моем тестовом классе у меня есть

require_once dirname(__FILE__) . '/../../vendor/autoload.php'; 
class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase { 

public function setUp() { 
    $this->setHost('localhost'); 
    $this->setPort(4444); 
    $this->setBrowserUrl('http://localhost/cwckids/web/user/login'); 
    $this->setBrowser('firefox'); 


} 

public function tearDown() { 
    $this->stop(); 
} 



public function testFormSubmissionWithUsername() 
{ 
$this->byName('login-form[login]')->value('admin'); 
$this->byName('login-form[password]')->value('mypassword'); 
$this->byId('login-form')->submit(); 

$content = $this->byTag('body')->text(); 
$this->assertEquals('Everything is Good!', $content, 'something wrong!!'); 
}  
} 

Моя проблема заключается в том, что браузер Firefox открывает, но не загружает страницы http://localhost/cwckids/web/user/login

тест проваливается сразу, потому что он не может найти элементы. Он дает сообщение Невозможно найти элемент: {"method": "name", "selector": "login-form [login]"}

Не удалось найти решение проблемы. Это какая-то несовместимость версий? Я попробовал несколько версий Firefox, а также сервер селена. Моя версия Firefox - 50.1.0. Если это несовместимость версии, кто-то может предложить правильные версии? Благодаря

Полный след

C: \ XAMPP \ HTDOCS \ seleniumtest> PHPUnit тесты/прием/UserSubscriptionTest.php PHPUnit 5.7.4 Себастьян Бергманн и участниками.

E 1/1 (100%)

Время: 6.51 секунд Память: 9.25MB

Был 1 ошибка:

1) UserSubscriptionTest :: testFormSubmissionWithUsername PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Не удалось найти element: {"method": "name", "selector": "login-form [login]"} Для документации по этой ошибке, пожалуйста, посетите: http://seleniumhq.org/exceptions/no_such_element.html Информация о сборке: версия: '2.53.1', версия: ' a36b8b1 ', время:' 2016-06- 30 17:37:03 ' Системная информация: host: DESKTOP-I0LAEAM, ip:' 192.168.8.101 ', os.name:' Windows 10 ', os.arch:' amd64 ', os.version: '10 .0 », java.version: '1.8.0_77' Driver информация: driver.version: неизвестно

C: \ XAMPP \ HTDOCS \ seleniumtest \ поставщик \ PHPUnit \ PHPUnit селенистая \ PHPUnit \ Extensions \ Selenium2TestCase \ Driver.php : 165 C: \ xampp \ htdocs \ seleniumtest \ vendor \ phpunit \ phpunit-selenium \ PHPUnit \ Extensions \ Selenium2TestCase \ CommandsHolder.php: 108 C: \ xampp \ htdocs \ seleniumtest \ vendor \ phpunit \ phpunit-selenium \ PHPUnit \ Extensions \ Selenium2TestCase \ Element \ Accessor.php: 134 C: \ xampp \ htdocs \ seleniumtest \ vendor \ phpunit \ phpunit-selenium \ PHPUnit \ Extensions \ Selenium2TestCase \ Element \ Accessor.php: 175 C: \ xampp \ ht docs \ seleniumtest \ vendor \ phpunit \ phpunit-selenium \ PHPUnit \ Extensions \ Selenium2TestCase \ Element \ Accessor.php: 108 C: \ xampp \ htdocs \ seleniumtest \ vendor \ phpunit \ phpunit-selenium \ PHPUnit \ Extensions \ Selenium2TestCase.php : 394 C: \ xampp \ htdocs \ seleniumtest \ tests \ принятие \ UserSubscriptionTest.php: 66 C: \ xampp \ htdocs \ seleniumtest \ tests \ принятие \ UserSubscriptionTest.php: 66 C: \ xampp \ htdocs \ seleniumtest \ поставщик \ PHPUnit \ PHPUnit селенистого \ PHPUnit \ Extensions \ Selenium2TestCase.PHP: 348 C: \ XAMPP \ HTDOCS \ seleniumtest \ поставщика \ PHPUnit \ PHPUnit селенистые \ PHPUnit \ Extensions \ Selenium2TestCase.php: 314

ОШИБКИ! Тесты: 1, 0: Утверждения, Ошибки: 1.

ответ

1

Там несколько вещей, которые я предлагаю изменения:

Вы пропускаете вызов $this->url(); из, что я могу видеть в вашем методе испытаний:

public function testFormSubmissionWithUsername() 
{ 
    $this->url('your actual URL here'); // Add this line 
    $this->byName('login-form[login]')->value('admin'); 
    $this->byName('login-form[password]')->value('mypassword'); 
    $this->byId('login-form')->submit(); 

    $content = $this->byTag('body')->text(); 
    $this->assertEquals('Everything is Good!', $content, 'something wrong!!'); 
}  

Вы также не вызывая parent::setUp() метод из вашего собственного метода настройки:

protected function setUp() 
{ 
    parent::setUp(); 

    // Set your browser, port setup etc here 
} 

Ther e также не нужно явно вызывать $this->stop(); из tearDown, поэтому полностью удалите эту функцию.

Наконец, я бы сказал селеном делать скриншоты неудач, они экономят много времени:

/** 
* Override this method from \PHPUnit_Framework_TestCase so we can capture a screenshot. 
* 
* @return void 
*/ 
public function onNotSuccessfulTest($exception) 
{ 
    $filedata = $this->currentScreenshot(); 
    $file  = YOUR_SCREENSHOT_DIR . '\testfails\\' . basename(get_class($this)) . '.png'; 
    file_put_contents($file, $filedata); 

    parent::onNotSuccessfulTest($exception); 
} 
+0

Благодарю вас так много. Ваш ответ действительно помог. Не уверен, почему $ this-> setBrowserUrl ('http: // localhost/cwckids/web/user/login'); не устанавливает URL-адрес, но ваше решение работает нормально. Мне тоже нравится идея скриншота. благодаря –

Смежные вопросы