Watir에서 DOM 요소의 클래스를 어떻게 변경합니까? 실제로 세 가지 요소의 클래스 중 하나를 제거해야합니까?Ruby Watir, DOM 요소의 클래스를 변경하는 방법은 무엇입니까?
가능한 여러 가지 해결책을 시도했지만 그 중 아무 것도 작동시키지 못했습니다. 아무거나는 도움이 될 것입니다.
Watir에서 DOM 요소의 클래스를 어떻게 변경합니까? 실제로 세 가지 요소의 클래스 중 하나를 제거해야합니까?Ruby Watir, DOM 요소의 클래스를 변경하는 방법은 무엇입니까?
가능한 여러 가지 해결책을 시도했지만 그 중 아무 것도 작동시키지 못했습니다. 아무거나는 도움이 될 것입니다.
일반 사용자는 요소의 클래스를 직접 변경하지 않으므로 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를 사용하여 요소를 찾을 수도 있습니다.
매력처럼 작동합니다! 감사합니다 저스틴. 감사합니다. :) – tomgalpin