2014-03-05 2 views
0

나는 프로그래밍에 상당히 익숙하며, 내가 무엇을 찾고 있어야하는지 잘 모르겠다.변수를 통해 watir 명령을 선택할 수 있습니까?

는 지금이 바로 같은 것을하고 있어요 : 그것은 아주 잘 확장되지 않기 때문에

def click(text, type) 
    b.span(:text=> text).click if type == 'span' 
    b.button(:name=> text).click if type == 'button' 
    b.image(:src=>text).click if type == 'image' 
    b.button(:title=>text).click if type == 'title' 
end 

나는 그것을 좋아하지 않아.

def click(text,type) 
    b.type(:text=> text).click 
end 

내가 따옴표없이 유형을 입력하려고하면 그것은 정의되지 않은 방법의 오류가 발생하지만, 확실히 문자열이 아니다 : 내가 좋아하는 일을하고 싶습니다. watir-webdriver span/button/image/etc를 사용하도록 스크립트에 어떻게 지시합니까?

답변

1

그것은이다는 이 방법으로 무엇을하고 싶은지, 왜 필요한지 정확히 알기는 어렵습니다. 또는 유형의 매개 변수가 문자열이 아닌 다른 이유 일 수 있습니다.하지만 여기에는 방법이 있습니다. ode가 제안한 것과 유사한 코드를 정리할 수 있습니다.

"확실히 문자열이 아닙니다."라고 말하면 무엇을 의미하는지 명확하지 않습니다. 문자열이 아니라면 무엇입니까? 이 객체의 어떤 유형인지 모른 채로이 메소드의 매개 변수에 고정시키고있는 것은 어디에서 오는 것입니까?

그래서 ...

def click(text, type) 
    types={span: :text, button: :name, image: :src, title: :title } 
    @b.send(type, {types[type]=>text}).click 
end 
+0

나는 이것을 시험해 보았다, 그것은 일하는 것처럼 보이지 않았다. Google 검색 버튼을 누르면 정의되지 않은 로컬 변수 '버튼'이 나타납니다. – user3385895

+0

오류 메시지에 대해 더 구체적으로 설명해야합니다. 전체 스택 추적과 작성한 코드 중 더 많은 것을 제공 할 수 있습니까? #button을 Watir 브라우저 객체로 보내면 # 버튼을 분명히 인식해야합니다. 필자는 필자가 어떤 점에서 정의해야한다고 생각했다. @b = Watir :: Browser.new –

+0

또 다른 가정은 _type_ 매개 변수 Symbol이어야합니다. 즉 ** 메서드의 두 번째 매개 변수로 _ ** 버튼 _ 및 _ 버튼 _이 아닌 **를 전달해야 함을 의미합니다. 나는 그것이 희망적이다. 그렇지 않다면 루비 프로그래밍 책을 들고 그 책에 대해 더 많이 배우라고 제안합니다. –

1

나는 당신이 당신의 스크립트에 click 메소드를 호출하는 방법을 잘 모르겠지만, 여기에 작동하는 것 같다 인위적인 예입니다

require 'watir-webdriver' 

def click_method(element, text) 
    @b.element(:text => "#{text}").click 
end 

@b = Watir::Browser.new 
@b.goto "http://www.iana.org/domains/reserved" 

click_method("link", "Domains") 

편집 :

require 'watir-webdriver' 

def method_not_named_click(el, locator, locator_val) 
    if locator_val.is_a? String 
    @b.send(el, locator => "#{locator_val}").click 
    elsif locator_val.is_a? Integer 
    @b.send(el, locator => locator_val).click 
    end 
end 

@b = Watir::Browser.new 
@b.goto "http://www.iana.org/domains/reserved" 

method_not_named_click(:a, :text, "Domains") 
method_not_named_click(:a, :index, 3) 
+0

...하지 않습니다 나는이 String 객체로이없는 않는 유형을 있으리라 믿고있어, 그래서 문자 소요 그래서 나는 그것을 만든' 요소'매개 변수가 무시 되나요? 그러면 요소 유형에 관계없이 도메인이있는 첫 번째 요소가 클릭됩니다. –

+0

Thx Justin. 나는 대답을 업데이트했다 (그리고 매개 변수 이름으로'element'를 사용하기 위해 나 자신을 때렸다.). – orde

+0

이유 : 텍스트 : 색인 : 매개 변수로 작동합니까? – user3385895

관련 문제