function BrowserTest::testXPathEscaping
Tests XPath escaping.
File
-
core/
modules/ simpletest/ src/ Tests/ BrowserTest.php, line 63
Class
- BrowserTest
- Tests the internal browser of the testing framework.
Namespace
Drupal\simpletest\TestsCode
public function testXPathEscaping() {
$testpage = <<<EOF
<html>
<body>
<a href="link1">A "weird" link, just to bother the dumb "XPath 1.0"</a>
<a href="link2">A second "even more weird" link, in memory of George O'Malley</a>
<a href="link3">A \$third\$ link, so weird it's worth \$1 million</a>
<a href="link4">A fourth link, containing alternative \\1 regex backreferences \\2</a>
</body>
</html>
EOF;
$this->setRawContent($testpage);
// Matches the first link.
$urls = $this->xpath('//a[text()=:text]', [
':text' => 'A "weird" link, just to bother the dumb "XPath 1.0"',
]);
$this->assertEqual($urls[0]['href'], 'link1', 'Match with quotes.');
$urls = $this->xpath('//a[text()=:text]', [
':text' => 'A second "even more weird" link, in memory of George O\'Malley',
]);
$this->assertEqual($urls[0]['href'], 'link2', 'Match with mixed single and double quotes.');
$urls = $this->xpath('//a[text()=:text]', [
':text' => 'A $third$ link, so weird it\'s worth $1 million',
]);
$this->assertEqual($urls[0]['href'], 'link3', 'Match with a regular expression back reference symbol (dollar sign).');
$urls = $this->xpath('//a[text()=:text]', [
':text' => 'A fourth link, containing alternative \\1 regex backreferences \\2',
]);
$this->assertEqual($urls[0]['href'], 'link4', 'Match with another regular expression back reference symbol (double backslash).');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.