ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
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进行断言。