【问题标题】:How to filter by id with Symfony 2 Dom Crawler?如何使用 Symfony 2 Dom Crawler 按 id 过滤?
【发布时间】:2012-10-18 13:59:59
【问题描述】:

这行得通

$this->assertEquals(1, $crawler->filter('.elementClass')->count()); // filter by class

但是,这似乎不起作用。

$this->assertEquals(1, $crawler->filter('#elementId')->count()); // filter by id

有什么想法吗?

【问题讨论】:

  • 添加 composer 包,"symfony/css-selector" 将添加对 CSS id 搜索的支持。

标签: symfony phpunit functional-testing


【解决方案1】:

Symfony2 DOM Crawler 过滤器内部使用 DOMXPath,因此您可以在 this thread 上找到问题的答案

过滤器的查询应该是这样的(注意下面的代码未经测试,我相信上面的链接会帮助你)

//*[@id='elementId']

【讨论】:

  • 感谢您的回答。我同时使用了 filter() 和 filterXPath() 方法。但是,他们没有工作。
  • 您尝试过类似 $crawler->filter('//yourtagname[@id="1"]')->count() 的方法,但没有成功?
  • 顺便说一下,我过滤的是 HTML,而不是 XML。
  • $crawler->filter('//yourtagname[@id="1"]')->count() 显示错误“意外符号”。 $crawler->filterXPath('//yourtagname[@id="1"]')->count() 不显示错误。但是,它找不到具有 id 的元素。
  • 你是对的。甚至 $this->assertEquals(1, $crawler->filter('#elementId')->count());作品。在我的公司,我们使用短开放标签。我忘了启用它。非常感谢你的帮助,icrew。当心,短的开放标签是不好的:(。
猜你喜欢
  • 2021-04-25
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
相关资源
最近更新 更多