В Firewatir, как я могу взаимодействовать с диалоговым окном печати Firefox? - PullRequest
4 голосов
/ 01 марта 2011

Я пытаюсь протестировать страницу с диалоговым окном печати, которое появляется сразу после доступа к нему.Все, что мне нужно сделать, это закрыть диалоговое окно или нажать кнопку «Отмена», чтобы я мог взаимодействовать со страницей за ним.Я пытался выяснить, как это сделать, но все, что я нашел, указывает на то, что это невозможно в Firefox.

1 Ответ

2 голосов
/ 01 марта 2011

Если вы работаете в 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:

  • Запустить повышенный 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).

...