在Watir中,我將如何更改DOM元素的類?其實我需要刪除其中的一個元素類(三個)?Ruby Watir,如何更改DOM元素的類?
我已經嘗試了一些可能的解決方案,但不能讓他們中的任何人工作。任何事情都會有幫助。
在Watir中,我將如何更改DOM元素的類?其實我需要刪除其中的一個元素類(三個)?Ruby Watir,如何更改DOM元素的類?
我已經嘗試了一些可能的解決方案,但不能讓他們中的任何人工作。任何事情都會有幫助。
由於普通用戶不會直接更改元素的類,Watir尚未提供直接執行此操作的方法。但是,由於使用Javascript刪除類是可行的,因此可以通過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>
我們可以刪除的一個類,說使文本顯示爲紅色類,通過對網頁執行JavaScript:
# 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
方法在某些瀏覽器版本只支持。我相信鉻/火狐都支持它相當長的一段,那裏的IE需要至少版本10.如果您需要支持舊的瀏覽器,你也可以做一個字符串替換:
browser.execute_script('arguments[0].className = arguments[0].className.replace(/(?:^|\s)error(?!\S)/ , "")', element)
你也可以使用jQuery如果你有它可用。
請注意,在execute_script
中,我們使用Watir/Selenium的特殊arguments
數組,以便我們可以將Watir元素傳遞給Javascript。我發現這對查找元素更容易,但如果您願意,還可以使用Javascript來查找元素。
工程就像一個魅力!謝謝Justin。我很感激。 :) – tomgalpin 2014-08-29 23:59:56