对网页进行断言

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

文章导航