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(