IE и Selenium: window.createPopup () - PullRequest
       6

IE и Selenium: window.createPopup ()

1 голос
/ 30 сентября 2010

В последнее время я играл с Selenium, пытаясь создать тесты для приложения только для IE.Ситуация прогрессировала (хотя медленно, так как без плагина рекордера мне пришлось прибегать к методам проб и ошибок, чтобы попытаться найти подходящие пути к элементам), но теперь я столкнулся с проблемой, связанной с всплывающими меню.

Большинство действий приложения запускаются из всплывающего меню, созданного с помощью javascript window.createPopup (), и я не могу найти способ отправки событий элементам внутри всплывающего окна.

Может быть, я должен выбрать всплывающее окно, как я делаю для окон, открытых с window.open (...), которые работают нормально, кстати.Я попытался присвоить имя всплывающему меню, возвращаемому методом createPopup (), и обработал его так же, как я отношусь к окнам, но, похоже, это не работает.

Кто-нибудь знает, должно ли это работать?Любая помощь будет оценена.

Спасибо,

Ответы [ 3 ]

1 голос
/ 01 октября 2010

К сожалению, нет.window.createPopup не доступен для Selenium.Будучи только функцией IE, она имеет ограниченную мобильность и, как правило, не является лучшей практикой.Я знаю, что это немного утешит вас, потому что я предполагаю, что вы застряли с чужим кодом, который использовал createPopup.

Настоящая проблема в том, что craeatePopup ничего не добавляет в DOM.Попробуйте открыть всплывающий объект и просмотреть его источник.Вы увидите это:

<html><body></body></html>

Так что, на самом деле, Selenium ничего не может захватить.

Что делает всплывающее окно для вашего приложения?Вы указали, что он обеспечивает некоторую навигацию, вы можете просто перейти на эти страницы напрямую?

0 голосов
/ 27 апреля 2011

Я использую селен 2.0b3 с InternetExplorerDriver.Я нашел кое-что, что делает трюк.

В вашем js сохраните ссылку на всплывающее окно.

  var popUp= window.createPopup();

Затем в вашем коде Java:

public Object executeJS(String code){
    JavascriptExecutor js = (JavascriptExecutor) driver;
    return js.executeScript(code);  
}
WebElement popUp =(WebElement) 
     executeJS("return  popUp.document.documentElement;");

Этодаст ссылку на страницу, и вы сможете найти элементы в обычном режиме.

0 голосов
/ 30 сентября 2010

если вы знаете название окна, вы можете сделать

selenium.click("elementToLaunchPopup");
selenium.waitForPopup("nameOfWindow",30000);
selenium.selectWindow("nameOfWindow");
// rest of your test

Чтобы вернуться в главное окно, вам нужно будет selenium.selectWindow("null");

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