TP单元测试扩展中对网页元素的断言是基于symfony部分组件的,因此在使用对网页断言的时候还需要安装一个CssSelector的symfony组件。打开命令行,切换到TP的根目录下,运行下列的命令:
`composer require symfony/css-selector:2.8`
等待其安装后便可以了。下面我们使用几个例子来说明一下如何使用网页元素断言。
# seeInElement
断言某个元素内是否存在某个元素。
@param $element 指定的元素,如body
@param $text 要断言的文本
@param $negate 是否断言不存在,默认为false
假设有如下的网页:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
Hello !
</body>
</html>
~~~
如果要断言字符串hello存在于body元素内,而字符串test不存在body里面,我们可以这么写:
~~~
<?php
namespace tests;
//针对Index控制器
class IndexTest extends TestCase
{
public function testOutput(){
$this->visit('/index/index/index')->seeInElement('body','hello');
$this->visit('/index/index/index')->seeInElement('body','test',TRUE);
}
}
~~~
# notSeeInElement
效果如同seeInElement中将第三个参数设置为true
@param $element 指定的元素,如bod
@param $text 要断言的文本
例子如上。
# seeLink
断言某个链接是否存在,当第二个参数被设置时,同时断言其链接。
@param $text 某个a元素的文本,比如`<a>test</a>`,那么这里应该是test
@param $url 默认为null,即断言找到的链接其地址是否为该url
假设有如下的网页:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="http://www.baidu.com">百度一下你就知道</a>
</body>
</html>
~~~
如果要断言链接百度一下你就知道的a标签的地址,可以如下:
~~~
<?php
namespace tests;
//针对Index控制器
class IndexTest extends TestCase
{
public function testOutput(){
$this->visit('/index/index/index')->seeLink('百度一下你就知道','http://www.baidu.com');
}
}
~~~
# notSeeLink
断言不存在某个链接。
@param $text 某个a元素的文本,比如`<a>test</a>`,那么这里应该是test
@param $url 默认为null,即断言找到的链接其地址是否为该url
例子如上。
# SeeInField
对input或者是textArea的value进行断言。
@param $selector name的值或者是id值
@param $expected 期望valued的值
如下网页:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form>
<input name="test" id="myInput" value="hello" />
</form>
</body>
</html>
~~~
我们即可以对name=test的input,也可以对id=myInput的input的value进行断言:
~~~
<?php
namespace tests;
//针对Index控制器
class IndexTest extends TestCase
{
public function testOutput(){
$this->visit('/index/index/index')->seeInField('test','hello');//通过name定位元素
$this->visit('/index/index/index')->seeInField('myInput','hello');//通过id定位元素
}
}
~~~
# notSeeInField
对input或者是textArea的value进行断言。
@param $selector name的值或者是id值
@param $expected 期望valued的值
例子如上。
# seeIsChecked
对某个input选中进行断言。
# notSeeIsChecked
对某个input不是选中进行断言。
# seeIsSelected
对某个inpust选择进行断言。
# notSeeIsSelected
对某个input不选择进行断言。
# seePageIs
对某个页面的uri进行断言。