2011-10-11 105 views
0

在我的web应用程序中,我有一个简单的文本框。在这个文本框中,我有一个jQuery函数,它将始终在每个关键帧上执行。有了这个函数,就会分配一个Ajax请求,每次SQL查询的结果都会加载该请求。我的代码相当于 RailsCasts的代码。现在我正在用Selenium测试我的webapp。用这行代码Watir和Ajax请求

browser.text_field(:id => 'textfield').set("Search text") 

文本将被写入并且内容将被改变。后应该单击它置于动态内容与此代码

browser.a(:id => "link").click 

问题的链接现在是,点击事件不会被执行。有人知道问题可能是什么?或者也许是Watir和Ajax的例子?

+0

我不明白这里有什么问题。当你点击一个链接什么都没有发生?而且会发生什么?你能否创建一个示例页面并提供URL? –

+0

你说:“现在我正在用Selenium测试我的webapp。用这行代码”,但接下来是Watir代码..这让我有些困惑......这只是对这个问题的缺失编辑? –

+0

你用Watir-Webdriver试过这个吗? –

回答

0

没有一个例子网站再次进行测试它很难确定,但我会抛出一些潜在的解决方案,为您

如果客户端JavaScript正在查找onkeyup事件,则可能需要在设置该字段的内容后触发一个。您可以通过.fire_event方法执行此操作。

您可能只是在查看计时问题。如果链接的性质因输入而发生变化,那么Watir可能会连续发射两个评论,而客户端代码仍然在做这件事(尤其是如果有来回的话)在jquery代码和web服务器之间,发生这种情况也会导致网络延迟,你可能需要在命令之间做一个短暂的休眠(蛮力)或等待某个特定的元素呈现预期的状态(稍微多一点工作,但也有一点点更强大,不会中断是延迟超过你的睡眠时间)

我建议通过IRB手动执行命令(你可以从你的脚本剪切和粘贴,如果需要),以便能够观察状态浏览器,并注意在特定操作后更新屏幕/ DOM的任何延迟如果在IRB中正常工作,但不是通过脚本执行时它通常被视为时间问题的确认。

0

如果这是最初的Watir/Firewatir,我会尝试在它试图点击它之前将它悬停在链接上。

我以前遇到过这样的问题,输入“自动填充”字段后会出现链接(即它试图通过从大量可能性列表中筛选出您想要的文本来猜测)。

试试这个:

browser.wait_until{browser.link(:id => "link").present?} 
browser.link(:id => "link").fire_event("onmouseover") 
browser.link(:id => "link").click 

如果它的工作原理,尝试没有.fire_event("onmouseover"),因为它可能仅仅是因为它试图点击链接才看得到前,不这样做。

如果这实际上是一个关于“Selenium”(错误标记为Watir)的问题,那么忽略所有上述内容,因为我是一个我从未使用过的应用程序。