2012-12-04 33 views
0

我有一些像这样的代码:click_no_wait行动`吨点击

content.button(:id,/Submit/).click_no_wait 
    puts 2 
    autoit = WIN32OLE.new("AutoItX3.Control") 
    puts 3 
    autoit.WinWait "XXXX" 
    puts 4 
    autoit.ControlClick "","OK","Button1" 

单击提交按钮,一个警告框将弹出后,并且代码将单击确定that.The功能“点击“将程序挂在那里,所以我需要使用”click_no_wait“。

但是,结果我可以得到3的提示,并且提交按钮没有被舔过。

为什么?什么是最佳解决方案?

+0

它看起来像你的元素是在一个框架,里面有一个使用click_no_wait时出错。 [较新的问题](http://stackoverflow.com/q/13918184/1200545)有一个解决方法。 –

+0

这个问题已经解决了吗?http://jira.openqa.org/browse/WTR-459 –

+0

当我在查看代码时,另一种方法中的注释表明该方法被Ruby 1.9中的更改(即该错误被重新引入)。 –

回答

1

如果你正在处理JavaScript的弹出窗口,看到这个页面:http://watirwebdriver.com/javascript-dialogs/

+0

我已经读过那个页面,弹出警告框后应该使用“browser.alert.ok ”方法,对吗?所以click_no_wait也需要点击。 并运行JS的方法使我另一个问题http://stackoverflow.com/questions/13698335/ole-error-code-80020101-caused-by-execute-script-of-waitr#comment18827428_13698335 请你看那一个?谢谢,如果没有更好的答案,我会接受你的答案。 –

0

如果#click_no_wait没有打开的对话框中,但经常会#click,那么它不因某种原因失效。我已经写在http://itreallymatters.net/post/1366392123/debugging-and-improving-watirs-click-no-wait-method#.UMCuJoOgnvA

调试#click_no_wait问题总之博客中,设置$DEBUGtrue#click_no_wait之前获得更多的故障排除信息:

$DEBUG=true 
content.button(:id,/Submit/).click_no_wait 
$DEBUG=false 
+0

我得到了下面的错误,并且这个错误链接似乎没有涉及: 异常'NoMethodError'在h:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3 .2.0/lib/watir -classic/locator.rb:124 - 未知属性或方法:'type' HRESULT错误代码:0x80020006 未知名称。 –

+0

使您的测试脚本永久等待,例如,在#click_no_wait之后循环执行sleep 1 end,然后打开单独的终端窗口并在删除换行符后手动输入输出的click_no_wait命令。你看到了什么? –

+0

对不起,您的意思是进入click_no_wait的输出吗?如何? –