Проблема: На странице ссылки изменяются динамически. Соответственно, надо проходится по всем ссылкам и искать нужные, ну и выполнять дальнейшие дейсвтия. Есть такая хорошая функция, как getAllLinks(), которая возвращает список (массив) id или name каждой ссылки, иначе массив будет пустой. НО, проблема, что в том, в ссылках НЕТУ id или name.
Референс на описания данной функции говорит: getAllLinks() method "Returns the IDs of all links on the page. If a given link has no ID, it will appear as "" in this array".
Вроде бы решение найдено, но я есть неточности. Собстветвено сам код.
{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }String locator = "//*/following::a";
for (int i = 1; i < browser.getXpathCount("//a").intValue(); i++) {
System.out.println("link #" + i);
System.out.println("href ="+ browser.getAttribute(locator + "[" + i + "]/@href"));
System.out.println("text = "+ browser.getText(locator + "[" + i + "]"));
}{/syntaxhighlighter}
Только вот есть несколько моментов:
Если искать линки по через, вот такой //a выражение, то получается не предсказуемое поведение. Т.е. //a[2] - не означает, что мы получим второй элемент по счету. Потому, я использовал //*/following::a
Когда я пытаюсь взять общее количество элементов по //*/following::a, то Selenium зависает ?! Не могу понять почему. Потому, я использовал //a
Это рабочий вариант, но работает, что-то очень медленно, что может быть неприемлимо в условиях, где большое множество тестов.
Может быть надо было использовать DOM вместо XPath?