Если вы работаете в MacOS или Linux, не знаете, что вам сказать ... Готов поспорить, что это возможно, но мне нужно научиться самому. :)
Если вы работаете в Windows, у меня есть несколько предложений. Я предлагаю проверить гем RAutomation, который хорош для таких задач (найдите и нажмите «Отмена» в диалоговом окне «Печать Firefox»):
https://github.com/jarmo/RAutomation
Или вы можете попробовать использовать AutoIt. При установке Watir также устанавливается копия AutoItX3.dll, которую вы можете использовать для простой автоматизации графического интерфейса, например:
Чтобы узнать, готов ли 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:
(Обратите внимание, что вам может потребоваться изменить путь выше, если ваша установка Ruby не находится в C: \ Ruby187 или у вас версия Watir, отличная от 1.6.5.)
Документация AutoIt находится здесь:
http://www.autoitscript.com/autoit3/docs/
И последнее, на что нужно обратить внимание:
Если оператор в вашем коде, который вызывает диалоговые блоки «Печать», пока диалоговое окно не закрыто, все становится немного сложнее. Вам нужно будет использовать потоки или внешний процесс для обработки диалога (поскольку я не думаю, что в FireWatir еще есть метод click_no_wait).