diff --git a/src/Dom/Selector/CssSelector.php b/src/Dom/Selector/CssSelector.php index 26b518f5..0fcf7ed6 100644 --- a/src/Dom/Selector/CssSelector.php +++ b/src/Dom/Selector/CssSelector.php @@ -10,20 +10,32 @@ final class CssSelector implements Selector { /** @var string */ - private $expression; + private $expressionEncoded; public function __construct(string $expression) { - $this->expression = $expression; + $this->expressionEncoded = \json_encode( + $expression, + \JSON_UNESCAPED_SLASHES + | \JSON_UNESCAPED_UNICODE + | \JSON_THROW_ON_ERROR + ); } public function expressionCount(): string { - return \sprintf('document.querySelectorAll("%s").length', $this->expression); + return \sprintf( + 'document.querySelectorAll(%s).length', + $this->expressionEncoded + ); } public function expressionFindOne(int $position): string { - return \sprintf('document.querySelectorAll("%s")[%d]', $this->expression, $position - 1); + return \sprintf( + 'document.querySelectorAll(%s)[%d]', + $this->expressionEncoded, + $position - 1 + ); } } diff --git a/tests/PageTest.php b/tests/PageTest.php index 68953ed5..57769b0c 100644 --- a/tests/PageTest.php +++ b/tests/PageTest.php @@ -21,7 +21,7 @@ */ class PageTest extends BaseTestCase { - private const WAIT_FOR_ELEMENT_HTML = '