Как напрямую перебирать результаты Selenium RC по XPath?

В настоящее время я прибегаю к тому, чтобы сначала выполнить get_xpath_count, а затем создать цикл, увеличивающий индексную переменную, которую, в свою очередь, я ввожу обратно в исходный xpath, чтобы выбрать n-й результат... очень неудобно, без сомнения.

Есть ли какой-нибудь простой, прямой, элегантный способ итерации непосредственно по результатам xpath?

Спасибо!


person GJ.    schedule 11.06.2010    source источник


Ответы (3)


Ваш подход, вероятно, является самым простым способом достижения вашей цели, однако он немного более элегантен в Selenium 2 (WebDriver). Пример на Java ниже:

List<WebElement> links = driver.findElements(By.xpath("//a"));
for (WebElement link : links) {
    System.out.println(link.getText());
}

Это выведет текст ссылки для каждой ссылки на странице на консоль.

person Dave Hunt    schedule 11.06.2010

Мы используем тот же подход. :)

Так что, если есть лучшее решение, я бы тоже хотел его увидеть... Но я не думаю, что оно есть.

Увы, если вы достаточно хорошо прокомментируете материал, это не так уж и плохо... :)

person Hannibal    schedule 11.06.2010

Что я делаю, так это использую пакет HtmlAgility в С#, читаю полный исходный код и применяю xpath, который затем возвращает список узлов.

Я могу повторить. Вы даже можете попробовать использовать linq, если хотите.

Я ценю, что обхожу стороной селен, но в то время это было удобно.

person danswain    schedule 11.06.2010