预期的字符串或标识符,但<delimiter“=”“”=“”at =“”8 =“”>找到

时间:2017-07-25 08:02:13

标签: 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($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() . '.'
    );
}

例外是:

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

为什么我不能在这一步中加斜线?

1 个答案:

答案 0 :(得分:0)

您不需要前面的*findAll会找到给定选择器的所有元素。
像这样格式化您的选择器:

[href~='/videos/']

a[href*='/artikel/']

如您所获得的例外情况所述,它不像/,您需要将它添加到单/双引号中。

您还可以尝试以下方式:

a[href*=artikel]