ruby - 在 Firewatir 中,如何与 Firefox 打印对话框交互?

标签 ruby firefox rspec watir firewatir

我正在尝试测试一个在访问时立即显示打印对话框的页面。我需要做的就是关闭对话框或单击取消,这样我就可以与它后面的页面进行交互。我试图找出如何做到这一点,但我发现的一切都表明它在 Firefox 中是不可能的。

最佳答案

如果您使用的是 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 方法)。

关于ruby - 在 Firewatir 中,如何与 Firefox 打印对话框交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148602/

相关文章:

perl - 如何在 perl 脚本中使用 Selenium Remote Driver 最大化/最小化 firefox 浏览器窗口

ruby-on-rails - 超出范围错误,在 rspec 测试期间类型::整数

ruby - rvm 使 gemset 原始是什么意思?

Ruby - 调用对象内部的方法并使用 .call()

firefox - 如何阻止Firefox中的某种字体?

Java FX 应用程序无法在带有 Linux 的浏览器上运行

ruby - Rspec + Factory girl(没有导轨!)

ruby-on-rails - 升级到ruby 3和rails 6.1后未定义的方法 `file_fixture_path'

ruby - 如何停止这个在 Ruby 中被错误初始化的方法?

ruby - 有没有其他方法可以触发 capybara ?