Я использую селен 1, и он хорошо работает для всплывающих окон в моем приложении.
//Click on browse file button, open a popup
selenium.click("//input[@value='Browse...']");
//waiting for popup to load
selenium.waitForPopUp("_Dialog", "30000");
//selecting the popup by passing window name
selenium.selectWindow("name=_Dialog");
//click a link inside pop up window
selenium.click("link=something");
//Put other popup operations here
//click cancel button for pop up
selenium.click("cancel");
//back to main window
selenium.selectwindow("null")
Чтобы получить сообщение из ящиков оповещения, используйте selenium.getAlert();
. Это вернет сообщение, содержащееся в окне предупреждения, в виде строки.
Кроме того, иногда вам нужно будет проверить, было ли предупреждение перед переключением на него.
int noofWindows = selenium.getAllWindowNames().length;
if (noofWindows > 1){
//selects the second window
selenium.selectWindow(selenium.getAllWindowIds()[2]);
//Prints the message in the alert window
System.out.println(selenium.getAlert());
}
Если нет необходимости запускать тестирование в IE, используйте firefox (* chrome) и закройте все остальные окна перед выполнением кода.
Надеюсь, это поможет вам.
* Весь упомянутый код предназначен для обработки всплывающих окон JavaScript. Я не уверен, будет ли это работать для Vb-скрипта или нет.
EDIT
Я думаю, что всплывающее окно загрузки IE является событием Windows, поэтому не может быть обработано селеном напрямую, для этого вам придется использовать Java AWT или AutoIT.
Скрипт AutoIT должен быть чем-то похожим на
WinWaitActive(windowTitle)
ControlClick(windowTitle,"",buttonName)
и сохраните его как IEsave.exe. ПРИМЕЧАНИЕ. Я не пробовал этот скрипт AutoIT.
теперь вы запустили IEsave.exe из вашей программы. Я использую Java здесь.
java.lang.Runtime.getRuntime().exec("c:/IEsave.exe");
Это выполнит файл, который в свою очередь обработает событие кнопки сохранения для окон.
Вы можете создавать аналогичные exe-файлы для обработки событий других окон.
Надеюсь, это решит вашу проблему.