2014-01-18 3 views
0

У меня есть html-форма, которая имеет эту разметку.Как утверждать URL-адрес атрибута действия с phpunit и selenium2?

<form id="login-form" action="/post/login"> 
    <input name="username" type="text"> 
    <input name="password" type="password"> 
</form> 

Я хочу уметь утверждать эту форму. Стараюсь с этим внутри метода испытания, обратите внимание, я протянул \ PHPUnit_Extensions_Selenium2TestCase

$form = $this->byId('login-form'); 
$this->assertEqual('/post/login', $form->attribute('action')); 

Похоже, что действия всегда нулевой.

Кто-нибудь знает, как проверить атрибут действия формы?

спасибо.

ответ

0

К сожалению, $form->attribute('action') возвращает действие с базовым url (http://localhost/post/login).

Я не нашел способ получить действие без базы и не нашел, как получить базовый url. Существует мое решение:

function testForm(){ 
     $this->url('/test.html'); 

     $form = $this->byId('login-form'); 
     $this->assertEquals('/post/login', $this->getRelativeFormAction($form)); 
    } 

    function getRelativeFormAction($form){ 
     $action = $form->attribute('action'); 
     $action = str_replace($this->getBaseUrl(), '', $action); 
     return $action; 
    } 

    function getBaseUrl(){ 
     $urlComponents = parse_url($this->url()); 
     $url = "{$urlComponents['scheme']}://{$urlComponents['host']}"; 
     return $url; 
    } 

Существует успешный full test код.