我有一个带有此标记的html表单。
<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 :(得分:0)
不幸的是,$form->attribute('action')
会返回基本网址(http://localhost/post/login
)的操作。
我没有找到一种没有基地的行动方式,也没有找到如何获得基本网址。有我的解决方案:
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代码。