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\Tests

Code

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.