diff --git a/src/Symfony/Component/DomCrawler/Link.php b/src/Symfony/Component/DomCrawler/Link.php index bb2302d522..e4b070c616 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 or area tag). + * Link represents an HTML link (an HTML a, area or link tag). * * @author Fabien Potencier * @@ -179,8 +179,8 @@ class Link */ protected function setNode(\DOMElement $node) { - if ('a' !== $node->nodeName && 'area' !== $node->nodeName) { - throw new \LogicException(sprintf('Unable to click on a "%s" tag.', $node->nodeName)); + if ('a' !== $node->nodeName && 'area' !== $node->nodeName && 'link' !== $node->nodeName) { + throw new \LogicException(sprintf('Unable to navigate from a "%s" tag.', $node->nodeName)); } $this->node = $node; diff --git a/src/Symfony/Component/DomCrawler/Tests/LinkTest.php b/src/Symfony/Component/DomCrawler/Tests/LinkTest.php index 941e4b2f6d..98a45a3a0c 100644 --- a/src/Symfony/Component/DomCrawler/Tests/LinkTest.php +++ b/src/Symfony/Component/DomCrawler/Tests/LinkTest.php @@ -86,6 +86,18 @@ class LinkTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $link->getUri()); } + /** + * @dataProvider getGetUriTests + */ + public function testGetUriOnLink($url, $currentUri, $expected) + { + $dom = new \DOMDocument(); + $dom->loadHTML(sprintf('', $url)); + $link = new Link($dom->getElementsByTagName('link')->item(0), $currentUri); + + $this->assertEquals($expected, $link->getUri()); + } + public function getGetUriTests() { return array(