2009-09-16 4 views
2

나는 짧을 것이다.속성으로 요소 가져 오기

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

: 거의 두 가지 방법을 제공 Watir과 각 요소 (DIV 버튼, 테이블, 리튬 등)에 대한

. 하나는 특정 요소 만 가져 오는 '단일'방법입니다. 예를 들면 다음과 같습니다.

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 : Hpricot을 가진

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

이 작업은 매우 쉽습니다을 ...하지만 당신의 목표가 파싱되지 않는다면 나는 내가 원하는 것을 수행하는 Watir Method를 찾을 수 없었다.

희망을 이해하십시오 ...

환호, 후안 !!

답변

2

후안,

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

  • 당신은 모든 링크를 깜박하고 싶은 말은,하지만 당신은 watir_instance.divs를 사용합니다. watir_instance.links
  • divs 메서드에 인수를 전달해야합니다 : watir_instance.divs(:id, 'my_link_id').

    내가 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 
+0

고마워요. Zeljko! 하지만 나는 내 문제와 내가하고 싶은 일을 잘 설명하지 못했다고 생각한다. watir이 div와 같은 메서드를 제공하지만 parametres를 받아들이는지 묻는 것입니다. 예를 들어, 클래스 'my_class'로 모든 링크를 플래시해야한다면 다음과 같이 입력하십시오 : b = Watir :: IE.start "xxxxxxx" b.links (: class, 'myclass'). 각 do | link | link.flash end 이와 비슷한 방법이 있습니까? 어쨌든이 방법이 없으면 내 문제를 해결하는 방법을 보았습니다. an은 속성을 비교하는 if 조건부를 수행합니다. – flyer88

+0

짧은 대답 : 아니오. 조금 더 긴 대답 : 내가 아는 한, 요소 모음 (div, 링크 ...)을 요청할 때, 모든 요소를 ​​얻을 수 있습니다. 특정 요소 (예 : 특정 클래스의 링크)를 얻을 수있는 방법이 없습니다. 다행히도, 내 대답은 그 문제를 해결합니다. –