2014-08-28 2 views

답변

1

일반 사용자는 요소의 클래스를 직접 변경하지 않으므로 Watir은이를 직접 수행하는 방법을 제공하지 않습니다. 그러나 클래스를 제거하는 것은 자바 스크립트로 가능하기 때문에 execute_script 메소드를 통해이를 수행 할 수 있습니다.

<html> 
    <head> 
    <style> 
     .label {font-size: 14em;} 
     .required {font-weight: bold;} 
     .error {color: red;} 
    </style> 
    </head> 
    <body> 
    <span class="label required error">text</span> 
    </body> 
</html> 

우리는 중 하나를 제거 할 수 있습니다 하나는, 텍스트가 큰 만드는 하나가 빨간색 텍스트를 만들기 위해 하나가 굵은 텍스트를 만들기 위해 -

우리가 세 개의 클래스가 일부 텍스트가있는 페이지가 말 클래스는 페이지에 자바 스크립트를 실행하여, 텍스트 빨간색을 만드는 클래스를 말한다 :

# Locate the element in Watir 
element = browser.span 

# Check that the text's original color is red 
p element.style('color') 
#=> "rgba(255, 0, 0, 1)" (red) 

# Execute Javascript to remove the required class, which makes the text red 
browser.execute_script('arguments[0].classList.remove("error");', element) 

# Check that the text's new colour is now black 
p element.style('color') 
#=> "rgba(0, 0, 0, 1)" (black) 

classList 방법은 특정 브라우저 버전에서 지원됩니다.

browser.execute_script('arguments[0].className = arguments[0].className.replace(/(?:^|\s)error(?!\S)/ , "")', element) 

또한 JQuery와 사용할 수 있습니다 당신은 또한 문자열 교체를 할 수있는, 크롬/파이어 폭스는 이전 버전의 브라우저를 지원해야하는 경우 IE는 적어도 버전 (10)을 필요로 꽤, 그것을 지원 믿습니다 만약 당신이 그것을 사용할 수 있습니다.

execute_script에서 Watir/Selenium의 특별 arguments 배열을 사용하여 Watir 요소를 Javascript로 전달할 수 있습니다. 요소를 찾는 것이 더 쉽지만 원하는 경우 Javascript를 사용하여 요소를 찾을 수도 있습니다.

+0

매력처럼 작동합니다! 감사합니다 저스틴. 감사합니다. :) – tomgalpin