문제

나는 부족할 것이다.

내가 아는 한 watir 라이브러리는 html 요소를 가져오는 두 가지 방법을 제공합니다.

거의 각 요소(div, 버튼, 테이블, li 등)에 대해 watir는 두 가지 방법을 제공합니다.

.하나는 하나의 특정 요소만 가져오는 '단일' 방법입니다.예를 들어:

watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)

이 메소드는 단일 요소만 검색합니다.괜찮아...

.두 번째는 watir 인스턴스의 모든 요소를 ​​검색하는 '복수형' 메서드입니다.

watir_instance.divs
watir_instance.links
watir_instance.buttons

그러나 내가 아는 한, watir는 특정 조건을 제공하는 두 개 이상의 요소를 얻는 방법을 제공하지 않습니다.

예를 들어...id:my_link_id로 모든 링크를 플래시하려면 다음과 같이 하면 매우 쉽습니다.

watir_instance.divs(:id, 'my_link_id').each do |link|
  link.flash
end

hpricot를 사용하면 이 작업이 매우 쉽습니다...하지만 당신의 목표가 구문 분석이 아니라면 내가 원하는 것을 수행하는 Watir 방법을 찾을 수 없습니다.

당신이 나를 이해할 수 있기를 바랍니다 ...

건배, 후안!!

도움이 되었습니까?

해결책

후안,

스크립트에 몇 가지 문제가 있습니다.

  • 모든 링크를 플래시하고 싶다고 말했지만 다음을 사용합니다. watir_instance.divs.그것은해야한다 watir_instance.links
  • 당신은 인수를 전달합니다 divs 방법: watir_instance.divs(:id, 'my_link_id').그것은 단지 watir_instance.divs

귀하의 예도 이상합니다.

모든 링크를 플래시하고 싶습니다. 아이디:my_link_id

내가 아는 한, ID는 페이지에서 고유해야 합니다.

다음은 다양한 예입니다.

1) 이 페이지의 모든 링크를 플래시하세요.

require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
  link.flash
end

2) 이 페이지에 있는 모든 링크를 플래시하세요. questions URL(보너스:깜박이는 링크가 보이도록 페이지를 스크롤하세요.)

require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
  if link.href =~ /questions/
    link.document.scrollintoview
    link.flash
  end
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top