From 23acd26d4a6f2c9a8448059d459e216f17818b10 Mon Sep 17 00:00:00 2001 From: Shane Preece Date: Tue, 11 Feb 2014 14:26:57 +0000 Subject: [PATCH] [DomCrawler] Added support for tags to be treated as links --- src/Symfony/Component/DomCrawler/Link.php | 4 ++-- src/Symfony/Component/DomCrawler/Tests/LinkTest.php | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/DomCrawler/Link.php b/src/Symfony/Component/DomCrawler/Link.php index ae9c1948e2..d662f8937c 100644 --- a/src/Symfony/Component/DomCrawler/Link.php +++ b/src/Symfony/Component/DomCrawler/Link.php @@ -12,7 +12,7 @@ namespace Symfony\Component\DomCrawler; /** - * Link represents an HTML link (an HTML a tag). + * Link represents an HTML link (an HTML a or area tag). * * @author Fabien Potencier * @@ -188,7 +188,7 @@ class Link */ protected function setNode(\DOMNode $node) { - if ('a' != $node->nodeName) { + if ('a' != $node->nodeName && 'area' != $node->nodeName) { throw new \LogicException(sprintf('Unable to click on a "%s" tag.', $node->nodeName)); } diff --git a/src/Symfony/Component/DomCrawler/Tests/LinkTest.php b/src/Symfony/Component/DomCrawler/Tests/LinkTest.php index e051f142ad..a17142830f 100644 --- a/src/Symfony/Component/DomCrawler/Tests/LinkTest.php +++ b/src/Symfony/Component/DomCrawler/Tests/LinkTest.php @@ -74,6 +74,18 @@ class LinkTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $link->getUri()); } + /** + * @dataProvider getGetUriTests + */ + public function testGetUriOnArea($url, $currentUri, $expected) + { + $dom = new \DOMDocument(); + $dom->loadHTML(sprintf('', $url)); + $link = new Link($dom->getElementsByTagName('area')->item(0), $currentUri); + + $this->assertEquals($expected, $link->getUri()); + } + public function getGetUriTests() { return array(