使用 DomCrawler 检查 table 行

Checking for a table row using 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>

我如何 运行 进行测试以检查带有图钉符号的行是否是带有 "MATCH" 的行?

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

感谢任何帮助,谢谢。

其实这道题可以看做字符串匹配题。 有几种不同的方法可以做到这一点。

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


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


  • 运行 grep 命令中的 shell

$ grep glyph xxx.php

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

要 select 您想要的元素,请使用此 XPath 表达式:

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

然后将其放入 PHPUnit 断言中。

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

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