2012-09-13 36 views

回答

9

假设我们正在谈论一个文本字段(即,您并未尝试清除/输入div标签),则.set().value=方法会在输入值之前自动清除文本字段。

所以下面的人会工作:

browser.text_field(:id, 'yourid').set('hi') 
browser.text_field(:id, 'yourid').value = 'hi' 

注意,它通常最好使用.set因为.value=不会触发事件。

1

我有一个类似的问题,出于某种原因,.set().value=不适用于该元素。

元素是的Watir :: HTML元素:

[2] pry(#<Object>)> field.class 
=> Watir::HTMLElement 

field.methods.grep /^(set|clear)$/ 
=> [] 

我使出发送退格键,直到字段的值是""

count = 0 
while field.value != "" && count < 50 
    field.send_keys(:backspace) 
    count += 1 
end 
field.send_keys "hi" 
3

我也有类似的问题, ,出于某种原因,.set().value=不适用于元素。

元素是的Watir ::输入:

browser.input(:id => "formLib1").to_subtype.clear 

清场,我能够输入文本后。

browser.input(:id => "formLib1").send_keys "hi" 
+1

需要注意的是,一旦你转换'的Watir :: Input'到'的Watir :: TextField',然后你可以调用'set'方法 - 即'browser.input(:ID => “formLib1” ).to_subtype.set( “HI”)'。这将消除手动调用“清除”的需要。 –