Selenium 2.0 Webdriver & Ruby, методы элемента ссылки, отличные от .text?Перейдите по ссылкам в массиве? - PullRequest
2 голосов
/ 09 ноября 2010

Я немного продвинулся в преобразовании некоторых тестовых тестов / спецификаций из 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, но, опять же, я не уверен, какие атрибуты

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

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

@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

0 голосов
/ 14 апреля 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...