1

我正在编写一个 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>

如何运行测试以检查带有图钉字形图标的行是否是带有“匹配”的行?

基本上我希望测试确认字形图标出现在正确的行上,并且只有类似的东西$crawler->filter('small:contains("' . $glyphCode . '")')->count()才能确认字形存在 - 而不是它在正确的位置。

任何帮助表示赞赏,谢谢。

4

2 回答 2

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

于 2015-02-04T11:00:56.557 回答
1

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

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


模式字符串可能喜欢/class="[^"]+glyph/


  • 在 shell 中运行grep命令

$ grep glyph xxx.php

于 2015-02-04T06:55:19.257 回答