使用DomCrawler检查表行

时间:2015-02-04 06:16:24

标签: symfony dom phpunit domcrawler

我正在写一个phpunit测试...在我的页面上我有几行,其中一行是这样的:

<tr><td>MATCH<small><span class="glyphicon glyphicon-pushpin"></span></small></td></tr>

有些是这样的:

<tr><td>NOT A MATCH 1</td></tr>
<tr><td>NOT A MATCH 2</td></tr>
<tr><td>NOT A MATCH 3</td></tr>

如何运行测试以检查带有图钉glyphicon的行是否为&#34; MATCH&#34;?

基本上我希望测试确认glyphicon出现在正确的行上,只是像$crawler->filter('small:contains("' . $glyphCode . '")')->count()那样只确认字形存在 - 而不是它在正确的位置。< / p>

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

您可以将XPath选择器与Symfony的DomCrawler一起使用。

要选择所需的元素,请使用此XPath表达式:

//td//small/span[@class="glyphicon glyphicon-pushpin"]

然后将其置于PHPUnit断言中。

$this->assertEquals(1, 
   $crawler->filterXPath('//td//small/span[@class="glyphicon glyphicon-pushpin"]')->count()
);

我已将assertEquals 1用作预期值,以确保在页面上找到一个元素。

答案 1 :(得分:1)

实际上,这个问题可以视为字符串匹配问题。 有几种不同的方法可以做到这一点。

$ret = $html->find('td[class=*glyph]');


模式字符串可能类似于/class="[^"]+glyph/


  • 在shell中运行 grep 命令

$ grep glyph xxx.php