2013-02-26 3 views
0

У меня есть код, который пытается посетить несколько веб-страниц и добавить их в избранное. Как я понимаю, после того, как вы используете посещение, capybara не может продолжать работу с остальными командами, проверьте код ниже;capybara использовать посещение в цикле

Когда я выполняю этот код, нажимайте и нажимайте на работу только один раз, но цикл цикла не запускается во второй раз.

Любые предложения?

+0

Да. Используйте 'sub_menus.each' вместо' for i в 0 .. (sub_menus.length-1) '. – harm

+0

Вы используете это для тестирования или выскабливания? Для соскабливания я нахожу [Mechanize] (http://mechanize.rubyforge.org/) на порядок лучше. – harm

+0

Спасибо за совет :) не помог с проблемой, хотя. Я пытаюсь автоматизировать некоторые тесты веб-страниц. –

ответ

0

Как только вы перейдете на другую страницу, локатор элементов станет недействительным, и вы больше не сможете его использовать. Таким образом, вы не можете использовать sub_menus на другой странице.

Таким образом, вы должны использовать что-то вроде:

links = all('li a').map { |el| el[:href] } 
$links = [] 
links.each do |link| 
    unless link !~ /http:\/\/intranet(.*)/ 
    visit link 
    $links << link 
    end 
end 
+0

Спасибо, Андрей это сработало. Другой вопрос: некоторые из ссылок, которые я нахожу, имеют целевые атрибуты, а другие нет. Я хочу очистить свой массив из тех, у которых есть целевые атрибуты. Как я могу это сделать? –

+0

@AlperMermer Использовать массив 'delete_if' метод –

Смежные вопросы