2010-11-09 4 views
2

Я немного дальше продвигаю некоторые образцы тестов/спецификаций от Watir до Selenium. После моего последнего вопроса здесь и предлагаемого ответа я начал использовать Selenium 2.0 с WebDriver вместо Selenium 1.Selenium 2.0 Webdriver & Ruby, методы элемента ссылок, отличные от .text? Навигация по ссылкам в массиве?

В данном примере рассматривается сбор всех ссылок внутри таблицы в массив - эта часть завершена. Однако, как только ссылки находятся в массиве, единственным значимым способом, с которым я могу взаимодействовать с ними, является текст .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' 

Ближайший пункт, который я смог найти в документации селена WebDriver был (строка) методом .attribute, но опять же, не уверен, из каких атрибутов

+2

Возможно, вам захочется посмотреть на watir-webdriver, который предоставляет API Watir поверх технологии WebDriver: http: // github. com/jarib/watir-webdriver – jarib

+0

Спасибо, Джариб, я посмотрел на него и обязательно проведу его вместе с Selenium 2/Webdriver. –

ответ

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

0

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

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