Диалоги окон и обработка всплывающих окон в Java или Javascript - PullRequest
1 голос
/ 25 апреля 2011

Мне нужно манипулировать всплывающими окнами и диалоговыми окнами загрузки браузера IE с помощью автоматизированного решения на основе Java или Javascript.

Я пробовал с selenium2, но он не работает должным образом, поэтому любые другие предложения по этому поводу.На самом деле selenium2 не обеспечивает надлежащей обработки диалоговых окон предупреждения / загрузки, поэтому я думаю использовать другое решение javascript / java.

С диалогом загрузки: мне нужно сохранить загруженный файл в определенном месте.С диалогами оповещений: мне нужно проверить отображаемое сообщение и нажать на конкретную кнопку.

Любое предложение приветствуется.Спасибо.

1 Ответ

2 голосов
/ 25 апреля 2011

Я использую селен 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-файлы для обработки событий других окон.

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...