Php 应为字符串或标识符,但<;分隔符/&引用;在8>;建立
我有这样一个Behat步骤,它断言有一个链接指向URL中带有Php 应为字符串或标识符,但<;分隔符/&引用;在8>;建立,php,symfony,exception,behat,mink,Php,Symfony,Exception,Behat,Mink,我有这样一个Behat步骤,它断言有一个链接指向URL中带有/videos/的内容: And I must see at least 1 "*[href~=/videos/]" 实施情况如下: /** * Asserts that at least X amount of Y exist * * @Then /^I must see at least (?P<amount>\d+) "([^"]*)"$/ */ public function iMustSeeAtLeast
/videos/
的内容:
And I must see at least 1 "*[href~=/videos/]"
实施情况如下:
/**
* Asserts that at least X amount of Y exist
*
* @Then /^I must see at least (?P<amount>\d+) "([^"]*)"$/
*/
public function iMustSeeAtLeast($amount, $selector)
{
$session = $this->getSession();
$container = $this->getContainer() ?: $session->getPage();
$elements = $container->findAll('css', $selector);
$actual = count($elements);
AssertionAbstract::assertGreaterThanOrEqual(
(int)$amount,
(int)$actual,
'Expected at least ' . $amount . ' of ' . $selector . ', found only ' . $actual . ' on ' . $session->getCurrentUrl() . '.'
);
}
/**
*断言至少存在X数量的Y
*
*@Then/^我必须至少看到(?P\d+)([^“]*)”$/
*/
公共函数imustsee至少($amount,$selector)
{
$session=$this->getSession();
$container=$this->getContainer()?:$session->getPage();
$elements=$container->findAll('css',$selector);
$actual=计数($elements);
断言抽象::assertGreaterThanOrEqual(
(int)$金额,
(int)$实际,
在“$session->getCurrentUrl()”上,至少应为“$selector.”的“$amount.”,但仅找到“$actual.”
);
}
例外情况是:
Exception 'Symfony\Component\CssSelector\Exception\SyntaxErrorException'
with message 'Expected string or identifier, but <delimiter "/" at 8> found.'
in vendor/symfony/css-selector/Exception/SyntaxErrorException.php:34
异常“Symfony\Component\CssSelector\Exception\SyntaxErrorException”
带有消息“预期为字符串或标识符,但已找到。”
在vendor/symfony/css selector/Exception/SyntaxErrorException.php:34中
为什么我不能在步骤中加斜杠?您不需要前面的
*
,findAll
将找到给定选择器的所有元素。按如下方式设置选择器的格式:
[href~='/videos/']
a[href*='/artikel/']
正如您得到的异常中所述,它不喜欢/
,您需要将其添加到单引号/双引号中
您也可以尝试以下方法:
a[href*=artikel]
您是否尝试过像“*[href~=\/videos\/]”那样逃逸选择器?是的,尝试像圣骑士一样逃逸said@Paladin然后它不会抛出错误,但不会再找到匹配的元素(我在浏览器
$(“a[href*='\/artikel\/'])的控制台中放置选择器时找到了它们)。如果我使用a,则没有什么区别[href
或只是如果我使用<代码> *= 或<代码> ~= -它都不起作用。<代码> /<代码>引发错误,<代码> \/< /> >找不到任何东西。是的,如果您有其他特殊字符而不是简单的工作,则需要在单引号/双引号中添加它。它抛出错误,因为<代码> /<代码>不被解释为PAR。属性值的t。