3

我正在尝试通过编写 feks 创建填充文本字段的 watir 测试

“lon”并等待下拉菜单被触发,然后单击列表中的第一个元素。

写“lon”应该会触发许多选项,例如“London, England, Storbritannia”, London, Kentucky, USA 等等。watir 有可能做到这一点吗?提前谢谢。

到目前为止,这就是我的代码的样子,尽管它不起作用,我想知道我在哪里遗漏了一些东西。

def test_scriptflight_autocomplete @site.navigate_to(:travel, :flight) from_field = @site.ie.text_field(:id, "locOriginName") to_field = @site.ie.text_field(:id, 'locDestinationName') from_field.set('奥斯陆')

# need to fire a key press event after setting the text since the js is handling
# trigger the autocomplete (requires a 'keydown')
from_field.fire_event('onkeydown')   

# wait until the autocomplete gets populated with the AJAX call
@site.ie.wait_until{@site.ie.div(:id, 'onlinesearch').lis.length > 0}
puts @site.ie.div(:id, 'locOriginName ').lis.length
puts @site.ie.div(:id, 'locOriginName').li(:index, 5).text

# find the li you want to select in the autocomplete list and click it
@site.ie.div(:id, 'from-field').li(:text, 'Oslo, Oslo, Norge').click

结尾

4

1 回答 1

2

我和工作中的一位同事(Magnar)发现了这个博客,帮助我们找到了我正在寻找的答案。

http://blog.saush.com/2008/05/using-rspec-and-watir-for-functional-testing-in-web-applications/

class Watir::IE  
    def fire_keydown_on(element_id, key)  
        ie.Document.parentWindow.execScript("key = document.createEventObject(); key.keyCode = #{key}")  
        ie.Document.parentWindow.execScript("document.getElementById('#{element_id}').fireEvent('onkeydown', key)")  
    end  
end

从博客:

我们刚刚为 IE 类添加了一个新方法“fire_keydown_on”,它接受元素 id 和键。此方法调用 Javascript 来创建事件对象(顺便说一下,这只适用于 IE)并将键代码设置为“13”,即回车键(回车键)。它调用 Javascript 来获取 HTML 元素(使用元素 id)并在其上触发 'onkeydown' 事件,同时传递它刚刚创建的事件对象。

于 2009-03-03T14:55:02.497 回答