如何使用 symfony dom 爬虫通过包含不间断空格的标签 select a link?
How to select a link by its label containing non breaking spaces using the symfony dom crawler?
我有一个 link:
<a
id="return-button"
href="{{ path('user_list') }}"
class="btn btn-secondary">
<i class="icon ion-md-arrow-back"></i> Back to the list
</a>
我尝试在测试中使用它。为此,我 select 它的标签:
self::$client->getCrawler()
->selectLink('Back to the list')
->link();
但是测试报错:
InvalidArgumentException: The current node list is empty.
是因为 link 标签中的
。如果我用一个简单的 space 替换它,道琼斯指数爬虫就可以 select 它。
我如何select这个link而不删除其中的非中断space?
您可以尝试使用这种语法:
{{ ' 返回列表'|raw }}
或者这个:
{{ ' 返回列表' }}
如本期所述:https://github.com/symfony/symfony/issues/33062,由于 Symfony 使用的 XPath 引擎,此行为是一个错误。
目前,为了避免这个问题,我们可以通过以下方式在 DOM 爬虫选择器中指定非中断 space:
self::$client->getCrawler()
->selectLink("\xc2\xa0Back to the list")
->link();
注意双引号而不是简单的引号。
我有一个 link:
<a
id="return-button"
href="{{ path('user_list') }}"
class="btn btn-secondary">
<i class="icon ion-md-arrow-back"></i> Back to the list
</a>
我尝试在测试中使用它。为此,我 select 它的标签:
self::$client->getCrawler()
->selectLink('Back to the list')
->link();
但是测试报错:
InvalidArgumentException: The current node list is empty.
是因为 link 标签中的
。如果我用一个简单的 space 替换它,道琼斯指数爬虫就可以 select 它。
我如何select这个link而不删除其中的非中断space?
您可以尝试使用这种语法:
{{ ' 返回列表'|raw }}
或者这个:
{{ ' 返回列表' }}
如本期所述:https://github.com/symfony/symfony/issues/33062,由于 Symfony 使用的 XPath 引擎,此行为是一个错误。
目前,为了避免这个问题,我们可以通过以下方式在 DOM 爬虫选择器中指定非中断 space:
self::$client->getCrawler()
->selectLink("\xc2\xa0Back to the list")
->link();
注意双引号而不是简单的引号。