Symfony 使用DomCrawler检查表行

Symfony 使用DomCrawler检查表行,symfony,dom,phpunit,domcrawler,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>

我正在写一个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>
匹配
有些是这样的:

<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>
不匹配1
不是比赛2
不是比赛3
如何运行测试以检查带有图钉图示符图标的行是否为带有“匹配”的行

基本上,我希望测试确认glyphicon出现在正确的行上,并且只需要像
$crawler->filter('small:contains(“..$glyphCode.””)->count()
这样的东西就可以确认glyph存在,而不是它在正确的位置


非常感谢您的帮助。

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

  • 使用
$ret=$html->find('td[class=*glyph')


  • 在PHP中使用
模式字符串可能类似于
/class=“[^”]+glyph/


  • 在shell中运行grep命令

$grep glyph xxx.php

您可以将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作为预期值,以确保在页面上找到一个元素。

谢谢。使用它以及
->parents()->parents()->html()
我能够得到我需要的东西。非常感谢:)