【发布时间】:2011-07-06 03:17:58
【问题描述】:
我正在尝试测试一个在访问时立即显示打印对话框的页面。我需要做的就是关闭对话框或单击它上的取消,以便我可以与它后面的页面进行交互。我试图弄清楚如何做到这一点,但我发现的一切都表明它在 Firefox 中是不可能的。
【问题讨论】:
标签: ruby firefox rspec watir firewatir
我正在尝试测试一个在访问时立即显示打印对话框的页面。我需要做的就是关闭对话框或单击它上的取消,以便我可以与它后面的页面进行交互。我试图弄清楚如何做到这一点,但我发现的一切都表明它在 Firefox 中是不可能的。
【问题讨论】:
标签: ruby firefox rspec watir firewatir
如果您使用的是 MacOS 或 Linux,不知道该告诉您什么...我敢打赌这是可能的,但我需要自己学习。 :)
如果您使用的是 Windows,我确实有一些建议。我建议查看 RAutomation gem,它非常适合这样的任务(在 Firefox 打印对话框中找到并单击取消):
https://github.com/jarmo/RAutomation
或者您可以尝试使用 AutoIt。安装 Watir 还会安装 AutoItX3.dll 的副本,您可以将其用于像这样的简单 GUI 自动化。
要查看 AutoIt 是否已准备好在您的系统上使用,请在 irb 中尝试一下 - 此代码将等待 10 秒以显示 Firefox 打印对话框,然后单击“取消”按钮:
irb(main):001:0> require 'win32ole'
=> true
irb(main):002:0> autoit = WIN32OLE.new('AutoItX3.Control')
=> #<WIN32OLE:0x3c61ce0>
irb(main):003:0> result = autoit.WinWaitActive('Print', '', 10)
=> 1
irb(main):004:0> result = autoit.ControlClick('Print', '', 'Cancel')
=> 1
如果“WIN32OLE.new('AutoItX3.Control')”行引发异常,您可能需要使用 regsvr32.exe 来注册 DLL。例如,以下是在 Win7 上执行此操作的方法:
启动提升的 cmd.exe
regsvr32 C:\Ruby187\lib\ruby\gems\1.8\gems\watir-1.6.5\lib\watir\AutoItX3.dll
(请注意,如果您的 Ruby 安装不在 C:\Ruby187 中,或者您的 Watir 版本与 1.6.5 不同,则可能需要更改上述路径。)
AutoIt 文档在这里:
http://www.autoitscript.com/autoit3/docs/
最后要注意的一件事:
如果您的代码中显示打印对话框的语句在对话框关闭之前一直阻塞,那么事情会变得更复杂一些。您需要使用线程或外部进程来处理对话框(因为我认为 FireWatir 还没有 click_no_wait 方法)。
【讨论】: