Selenium 2.0 Webdriver и Ruby, методы элемента ссылки, отличные от .text? Ссылки Navigate.to в массиве?

Я немного продвинулся в преобразовании некоторых образцов тестов/спецификаций из Watir в Selenium. После моего последнего вопроса здесь и предложенного ответа я начал использовать Selenium 2.0 с WebDriver вместо Selenium 1.

В рассматриваемом примере речь идет о сборе всех ссылок в таблице в массив — эта часть завершена. Однако, как только ссылки находятся в массиве, единственным осмысленным способом взаимодействия с ними становится .text. Использование @driver.navigate.to Array[1] приводит к ошибке формата URL в браузере, а link.href или .src не являются допустимыми параметрами.

Реализация Watir собирала эти ссылки (страницы, добавленные пользователями через CMS), сохраняла их в массиве, а затем посещала каждую страницу одну за другой, отправляя лид-форму. Я полагаю, что смогу заставить это работать, используя Selenium и повторно посетив «домашнюю» страницу, содержащую все ссылки между отправками лид-форм, но это может означать сотни дополнительных загрузок страниц, кэшированных или нет.

Код на данный момент: ' @countries = Array.new

@browser.navigate.to "http://www.testingdomain{$env}.com/global"  
@browser.find_elements(:xpath, "//table[@class='global-list']//a").each do |link|      
  @countries << [link.text, link.href]  ## The original WATIR line that needs an update
end #links  

@countries.uniq! #DEBUG for false CMS content'

Ближайшим элементом, который я смог найти в документации selenium-webdriver, был метод (string).attribute, но опять же, я не уверен, какие атрибуты


person adam reed    schedule 09.11.2010    source источник
comment
Вы можете взглянуть на watir-webdriver, который предоставляет Watir API поверх технологии WebDriver: github. com/jarib/watir-webdriver   -  person jarib    schedule 09.11.2010
comment
Спасибо, Джариб, я просмотрел его и обязательно буду тестировать вместе с Selenium 2/Webdriver.   -  person adam reed    schedule 10.11.2010


Ответы (2)


Я не был уверен в формате для использования с методом атрибутов, но после некоторых экспериментов я смог пройти этот шаг.

@countries = Array.new

@browser.navigate.to "http://www.testingdomain{$env}.com/global"

@browser.find_elements(:xpath, "//table[@class='global-list']//a").each do |link|
text = link.attribute("text")
href = link.attribute("href")
@countries << [text, href]
end #links
`@countries.uniq! #DEBUG for false CMS content

person adam reed    schedule 09.11.2010

Похоже, вы сами нашли ответ на свой вопрос.

Действительно, element.attribute позволяет вам получить любой HTML-атрибут, который может иметь тег. Таким образом, поскольку вы хотели получить URL-адрес элемента, вы использовали element.attribute('href') для возврата атрибута href="" элемента. То же самое можно сделать для любых других атрибутов, включая класс, идентификатор, стиль и т. д.

person bbbco    schedule 14.04.2013