2015-04-14 6 views
-1

Ссылка на ответ Зелжко Филипин на How do I retrieve a custom attribute in watir?Как щелкнуть переменную ссылку?

У меня есть ряд ссылок, таких как:

<a href="//stackoverflow.com" 
    title="professional and enthusiast programmers">Stack Overflow</a> 
<a href="//programmers.stackexchange.com" 
    title="professional programmers interested in conceptual questions about software development">Programmers</a> 

Я хранятся ссылки в массиве; Мне нужно щелкнуть по отдельной ссылке.

browser.link(:href => /stackoverflow/).click 

Вместо «StackOverflow», я хочу запустить через мой массив (т.е. заменить переменную массива):

browser.link(:href => /array[i]/).click 

Может кто-нибудь просветить меня, как я могу добиться этого?

+0

Это поможет поделиться содержимым 'array'. Например, это массив строк, которые вы хотите вставить в регулярное выражение или они уже являются регулярными выражениями? –

ответ

0

Это то, что вы хотите?

array.each { |link| 
     browser.link(:href, 'link').click 
    } 
+0

Похоже, он тоже хочет косые черты (при условии, что они необходимы). Поэтому, возможно, '(: href,"/# {link}/")' вместо просто '(: href, 'link')'? – pjd

0

Вот надуманный пример, который будет перебирать список href атрибутов и интерполировать каждый в петлю, которая будет нажать каждую ссылку:

require 'watir-webdriver' 

b = Watir::Browser.new 
b.goto('http://www.iana.org/domains/reserved') 
arr = %W(/domains /numbers /protocols)   # an array of strings 
arr.each { |el| b.link(href: "#{el}").click} 

Хитрость здесь является интерполяция синтаксис: #{}. Когда он помещается в строку с двойными кавычками, код в пределах #{} оценивается и вставляется в строку. Например:

# interpolate a string 
str_to_insert = "world" 
puts "hello #{str_to_insert}" 
#=> hello world 

# evaluate code before interpolation 
puts "one plus two equals #{1 + 2}" 
#=> one plus two equals 3 
Смежные вопросы