Как загрузить файл (с помощью raduploader), используя selenium RC?
Я пытаюсь загрузить файл, используя selenium
, но проблема в том, что мое поле загрузки не похоже
<input type="file".....> [where i can directly say "selenium.type("xpath ","file path") ]
но здесь для загрузки файла мы используем Rad Uploader, и он ничего не записывает в IDE Селена, хотя я нажимаю на uploader
,
Кто-нибудь знает, как загрузить файл с Raduploader, используя Selenium
?
<object height="22px" type="application/x-silverlight-2" data="data:application/x-silverlight-2,"
id="ctl00_ctl00_ContentPlaceHolder1_mainTabContainer_thirdTab_ChildPlaceHolderCampVolunteers_fileUploadVolunteersilverlight04"
class="ruObject" style="width: 100%;">
это некоторая часть кода поля загрузки
Благодарю.
1 ответ
Поскольку Rad Uploader - это в основном Java-апплет, вы можете использовать LiveConnect для взаимодействия с ним!
Существует даже инструмент для него и Selenium (хотя я не использую его, поэтому я не могу сказать, хорошо ли он работает или нет): http://fest.codehaus.org/Selenium
Если это не сработает, вам, вероятно, потребуется использовать другую библиотеку автоматизации для загрузки файлов, поскольку Selenium не создан для работы ни с апплетом Java, ни за пределами браузера. Возможные решения включают перетаскивание или (Ctrl + C + Ctrl + V ing) файлы из-за пределов окна на ваш Uploader, или слепое нажатие на кнопку Browse...
редактировать
Я явно искал не тот продукт, потому что код OP показывает, что на самом деле это элемент Silverlight, а не Java-апплет.
Но - зная, что для Java-апплетов есть инструмент для этого, я покопался и нашел:
Существует инструмент для использования Selenium RC с Silverlight! Не знаю, насколько хорошо это на самом деле работает, но вы можете попробовать. Да, я знаю, что это только Selenium RC, но вы можете попробовать это с WebDriverBackedSelenium
...
Блог Скотта Хансельмана (очень читаемый!) - "злоупотребление" тем, что Silverlight может работать Scriptable
методы. Он написан для Selenium IDE, но то же самое будет работать для WebDriver
, тоже.
Среда тестирования для Silverlight. Microsoft. Selenium для веб-страниц, попробуйте это для магии Silverlight.
РЕДАКТИРОВАТЬ 2:
Всегда есть вариант, о котором я упоминал ранее. Так как загружаемая вещь не input
, но есть объект Silverlight и отсутствует API для WebDriver, который позволял бы вам работать с диалоговыми окнами браузера (или объектами Silverlight), вы можете попробовать это:
После того, как вы нажмете элемент Silverlight, появится всплывающее окно, которое вы не сможете контролировать. В известных мне браузерах и операционных системах можно предположить, что после открытия окна курсор находится в File name
вход. Пожалуйста, убедитесь, что это предположение верно и в вашем случае.
Если нет, вы можете попытаться перейти к нему, нажав Alt + N, по крайней мере, в Windows...
(Далее следует код Java! Я действительно не знаю C#. Однако он работает в Java. Класс C# похож на Java Robot
является SendKeys
)
Если да, вы можете "вслепую" ввести путь, используя Robot
учебный класс. В вашем случае это будет что-то вроде:
driver.findElement(By.id("SWFUpload_0")).click();
Robot r = new Robot();
r.keyPress(KeyEvent.VK_C); // C
r.keyRelease(KeyEvent.VK_C);
r.keyPress(KeyEvent.VK_COLON); // : (colon)
r.keyRelease(KeyEvent.VK_COLON);
r.keyPress(KeyEvent.VK_SLASH); // / (slash)
r.keyRelease(KeyEvent.VK_SLASH);
// etc. for the whole file path
r.keyPress(KeyEvent.VK_ENTER); // confirm by pressing Enter in the end
r.keyRelease(KeyEvent.VK_ENTER);
Это отстой, но это должно работать. Обратите внимание, что они могут вам понадобиться: Как я могу заставить робота набирать `:`? и конвертировать строки в ключевые события