2012-03-26 97 views
0

i've got a question, regarding selenium + php (using PHPUnit_Extensions_SeleniumTestCase):php + selenium,如何獲取全部<a href...> tags from one page

i'm going through a loop, trying to get all elements from a webpage, by doing something like:

$i = 1; 
while ($this->isElementPresent("//a[" . $i . "]")) { 
     $tagContents = $this->getText("//a[" . $i . "]"); 
     print $tagContents . "\n"; 
     $i++; 
} 

and it's not finding all elements :( if i try to get the contents via $this->getText() a very few are filled, some are empty, and the overall amount of tags is way less than i really have on my page

anyone got an idea what i might be doing wrong ?

回答

1

There is a very useful method in Selenium - getAllLinks(). Look here

返回頁面上所有鏈接的ID。如果給定的鏈接沒有ID, 它將在此數組中顯示爲「」。



取而代之的是你可以使用JavaScript的所有鏈接(看getElementsByTagName() - example)。

編輯
OK,我已經做了你(我在做類似的東西);)

$js = "function getAllLinks() { 
      var links = window.document.getElementsByTagName('a'); 
      var contents = []; 
      for (i = 0; i < links.length; i++) { 
       var link = links[i]; 
       var text = link.textContent; 
       contents.push(text); 
      } 
      return contents; 
     } 
     getAllLinks();"; 
$links = $this->getEval($js);