【问题标题】:Getting the Tag name of a element crawled with DomCrawler in PHP在 PHP 中获取使用 DomCrawler 爬取的元素的标签名称
【发布时间】:2014-03-21 16:38:53
【问题描述】:

我正在使用 PHPUnit 抓取我的 html 视图,使用 DomCrawler

$element = $crawler->filter("#myElement");

一旦我有了元素,我怎么知道它是什么标签? (<input>, <select>, ...)

我知道我可以这样做:

$element = $crawler->filter("input#myElement");

但我需要提取标签的名称,并将其存储在变量中

【问题讨论】:

    标签: unit-testing symfony testing phpunit web-crawler


    【解决方案1】:

    据我所知,这应该可行:

    $element = $crawler->filter("#myElement");
    $name = $element->getNode(0)->tagName;
    

    Crawler::getNode(index) 返回一个具有 tagName 只读字段的 DOMElement。

    【讨论】:

    • 最新的稳定版本似乎将 getNode() 方法作为受保护的方法
    • 我已经检查过了,从 2.4 开始它是公开的
    • 我已将"symfony/dom-crawler": "*" 添加到我的composer json 中,并且下载的版本仍然对其进行了保护。我认为 2.4 尚未在频道中。你推荐我什么配置?
    • composer.lock 文件中有什么内容?它下载哪个版本?
    • 如何在 Symfony 2.3 中获取标签名称?
    【解决方案2】:

    更新:现在是

    $element = $crawler->filter("#myElement");
    $name = $element->nodeName();
    

    ... 这实际上是一个包装器

    $crawler->getNode(0)->nodeName
    

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 2011-07-17
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2018-12-06
      • 1970-01-01
      相关资源
      最近更新 更多