2014-09-02 5 views
2

몇 가지 오버레이 및 일부 요소가 있는데이 요소의 가시성을 확인해야합니다. 그것은 페이지 개체를 통해 달성 할 수 있습니까? 내 의도는 여기 내 페이지에있는 메서드가 있고 그것은 true 또는 false 가시성을 반환해야합니다. 내 페이지 파일은 다음과 같습니다.Page Object를 사용하여 가시성을 확인하는 방법은 무엇입니까?

class HomePage 
include PageObject 
span(:text1, :text=>'text1') #this has 10+matches on my page 

    def getAvailabilityOf text 
    return send("#{text}.visible?") 
    end  
end 

이것은 내 단계 정의에서 호출하는 방법입니다.

Then(/^I should verify the visibility of "(.*?)" on images$/) do |text| 
    puts on(HomePage).getAvailabilityOf text 
end 

아래는 HTML입니다.

<div class="box col2 review-box featured masonry-brick" style="height: 360px; background-image: url("https://stagingfiles.gamestakers.com/images/204/medium.jpg?1408991647"); background-repeat: no-repeat; position: absolute; top: 0px; left: 0px;"> 
    <a href="/interviews/jeremy-spillmann"> 
     <div class="gradient-fade"> 
      <div class="featured-box">Featured</div> 
       <div class="title"> 
        <span>text1</span> 
        <h2>Jeremy Spillmann</h2> 
       </div> 
     </div> 
    </a> 
</div> 

아래의 오류가 발생합니다.

Then I should verify the visibility of "text1" on images 
    undefined method `text1.visible?' for #<HomePage:0x35798b8> (NoMethodE rror) 
    ./features/support/pages/HomePage_page.rb:67:in `getAvailabilityOf' 
    ./features/step_definitions/homepage.rb:45:in `/^I should verify the visib ility of "(.*?)" on images$/' 
    features\RINavigation.feature:6:in `Then I should verify the visibility of "interview" on images' 

나는 콘솔에 인쇄 할 참 또는 거짓 기대하고있다. 간단히
나는 browser.span @

을 구현하는 페이지 오브젝트 방식으로 기대하고있다. (: 텍스트 => "텍스트 1")를 볼 수?


나에게

감사의 주위에 몇 가지 작업,
Avinash

+0

@JustinKo 추천으로 수정되었습니다. –

답변

2

문제가 제안하는 선에서 :

return send("#{text}.visible?") 

페이지 객체가 단일를 찾고 있습니다 존재하지 않는 "text1.visible?"라는 메소드가 있습니다. send은 단일 메서드 호출을 만들기위한 것입니다. 그것은 문자열을 평가하지 않습니다. 즉, 실제로 메소드를 호출하기를 결정하지 않고 리턴 된 값으로 두 번째 메소드를 호출합니다.

는 다음을 할 수있는 : send("text1") 그냥 스팬 요소의 텍스트를 반환한다는

def getAvailabilityOf text 
    return send("#{text}_element").visible? 
end 

참고. send("#{text}_element")visible? 메서드를 갖는 페이지 개체 요소를 반환합니다.

방법을 사용하는 방법에 따라 아마도 실제로 다음을 원한다. 접근자를 만들 필요없이 텍스트를 찾을 수있다.

def getAvailabilityOf text 
    return span_element(:text => text).visible? 
end 
+0

내가 필요한만큼 완벽하게 작동 –

2

나는 당신의 질문에서 뭔가 미묘한 것으로 나타났습니다.

내가 이러한 요소 (들)

의 표시 여부를 확인해야합니다 :

span(:text1, :text=>'text1') #this has 10+matches on my page 

당신은이 요구 사항을 추가 :

당신은 샘플 코드의 주석에 표시

저스틴의 대답은 하나의 고유 한 요소의 유효성을 검사하기 위해 수행해야하는 작업이지만 동일한 특성과 텍스트를 가진 여러 요소가있는 경우 사용하려는 잊으 같은, span_elements입니다 :

def getAvailabilityOf text 
    return span_elements(:text => text)    
end 

은 아마도이

Then /^I should verify the visibility of (.*?) on images$/ do |text| 
    spans = getAvailabilityOf text 
    spans.each do |s| 
     #Your validation code goes here 
    end 
end 

이 검증에 검증의 일종을 할 것입니다없는 매우 세분화 정확히 모르는로하는 기간 엘리먼트를 검사하는 것이므로 고려해야합니다.

+0

그레이트 제안 –