php + selenium, как получить все <a href...> теги с одной страницы - PullRequest
0 голосов
/ 26 марта 2012

У меня есть вопрос, касающийся селен + php (используя PHPUnit_Extensions_SeleniumTestCase):

Я прохожу цикл, пытаюсь получить все элементы с веб-страницы, делая что-то вроде:

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

и он не находит все элементы :( если я пытаюсь получить содержимое с помощью $ this-> getText (), очень немногие заполняются, некоторые пустые, а общее количество тегов намного меньше, чем у меня есть на моей странице

Кто-нибудь понял, что я могу делать не так?

1 Ответ

1 голос
/ 27 марта 2012

В Selenium есть очень полезный метод - getAllLinks(). Смотрите здесь .

Возвращает идентификаторы всех ссылок на странице. Если данная ссылка не имеет идентификатора, в этом массиве оно будет отображаться как "".



Вместо этого вы можете получить все ссылки, используя javascript (см. getElementsByTagName() - пример ).

EDIT
Хорошо, я сделал это для вас (я работал над чем-то похожим);)

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...