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进行断言。