Поле обзора - PullRequest
       15

Поле обзора

1 голос
/ 01 апреля 2009

Как выбрать файл в диалоговом окне просмотра файлов (т. Е. Загрузить файл с моего компьютера) в сценарии автоматизации Ruby Selenium?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2009

Думаю, я уже сталкивался с этой проблемой.

Когда вы пишете сценарии селена на Ruby, вы можете управлять всеми окнами браузера. Но диалог выбора файлов и диалог загрузки файлов на самом деле являются системными окнами, поэтому вы не можете управлять ими с помощью селена.

Однако вы можете управлять ими через гем Win32OLE для тестов, работающих в Windows. Но, конечно, тогда вы не сможете запустить эти тесты на Mac или Linux.

Как и селен в целом, он довольно хакерский. Но вот как это работает:

 require 'selenium'
 require 'test/unit'
 require 'win32ole'

 class DownloadFileTest < Test::Unit::TestCase
   def setup()
     @wsh = WIN32OLE.new('Wscript.Shell')
   end
   def teardown
     WIN32OLE.ole_free(@wsh) # yes, this is required *rolls eyes*
   end
   def test_download_file
     # ...stuff that causes a download window to pop up...
     @wsh.AppActivate("Opening")
     sleep(2)
     @wsh.SendKeys("{RIGHT}{ENTER}") # Hits ok button - file downloads
     sleep(3)
     # Use regular Ruby File methods to assert stuff on the file content
   end
0 голосов
/ 02 апреля 2009

Я бы пропустил все вещи OLE и просто набрал путь к полю:)

Вы можете делать это, пока вы используете Selenium RC с одним из привилегированных режимов. Они используются по умолчанию, если вы используете последнюю бета-версию 1.0 2.

...