Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 应为字符串或标识符,但<;分隔符/&引用;在8>;建立_Php_Symfony_Exception_Behat_Mink - Fatal编程技术网

Php 应为字符串或标识符,但<;分隔符/&引用;在8>;建立

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

我有这样一个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($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。