2012-08-29 3 views
3

나는 Hirfs의 배열을 반환 Watir가 필요합니다. 이 href는 모두 같은 div에 있으며 모두 동일한 클래스입니다. 그 후 내가 그 사업부에서 사용할 수있는 모든하는 HREF를 통해 어떻게 루프를 찾을 수 없습니다,hrefs의 배열을 반환

b.div(:class => 'products').link(:class => 'product_detail_url').href 

을하지만 : 페이지의 첫 번째 HREF를 잡아 내 코드는 다음과 같습니다.

나는 솔직히 그 곳 곳곳을 바라 보았다.하지만 내가 찾은 해결책 중 어느 것도 내 구체적인 필요를 해결하지 못했다. 읽어 주셔서 감사합니다, 누군가가 해결책을 가지고 있기를 바랍니다.

답변

2

시도 :

b.div(:class => 'products').links(:class => 'product_detail_url').each do |link| 
    puts link.href 
end 

특정 클래스가 링크의 컬렉션을 기본적으로이 반복합니다.

업데이트 :

배열로하는 HREF를 모두 수집하려면 수집 방법을 사용

link_arr = b.div(:class => 'products').links(:class => 'product_detail_url').collect{ |link| link.href } 

을 또는 읽기 쉽게 두 라인으로 그것을 깰 :

link_collection = b.div(:class => 'products').links(:class => 'product_detail_url') 
link_arr = link_collection.collect{ |link| link.href } 
+0

감사합니다. 나는 조잡한 해결책을 실행하고 있었지만 이것은 훨씬 나아졌습니다. 고맙습니다. –

1

#map을 # collect의 별칭 및 짧은 블록 구문으로 사용하여 더 짧게 작성할 수도 있습니다.

hrefs = b.div(:class => 'products').links(:class => 'product_detail_url').map(&:href) 
관련 문제