Selenium, Java, waitForCondition - PullRequest
       3

Selenium, Java, waitForCondition

4 голосов
/ 02 июня 2011

Я хочу проверить следующее (на ie8):

После нажатия на ссылку открывается всплывающее окно, затем я хочу проверить, загружен ли внутри флеш-контент.

По какой-то причине waitForPopUp не работает, просто продолжает ждать и время ожидания истекло, но я решил это следующим образом:

selenium.waitForCondition("selenium.getAllWindowTitles().length > 1;", "30000");
String windowID = selenium.getAllWindowTitles()[1];
selenium.selectWindow(windowID);

Затем я хочу проверить, есть ли флэш-контент, прежде чем что-либо проверять на нем (веб-страница очень медленная, и всплывающее окно требует времени, чтобы что-то показать)

selenium.waitForCondition("selenium.isElementPresent(\"//*[@id='flashcontent']\");",
"30000");
FlashSelenium flashApp = new FlashSelenium(selenium, "flashClient");
assertTrue ( flashApp.PercentLoaded() == 100 );

Я пробовал сотни способов сделать это, но ни один не работает, Я также пытался проверить, присутствует ли текст, но ничего, всегда, даже если веб-страница полностью загружена.

По какой-то причине все работает нормально, если я выполняю пошаговое выполнение в отладчике: S

1 Ответ

1 голос
/ 08 июня 2011

Я немного подумал об этом.
Невозможно проверить объект, если он действительно загружен, а приложение flash готово и инициализировано.
Единственный верный способ сообщить селену, что флэш-объект загружен и готов, - это чтобы флэш-память использовала метод ExternalInterface и вызывала функцию JavaScript, которая назначит переменную var, а затем выполнит проверку селена на переменную по таймеру.

Example<br/>
// in JavaScript
var isFlashLoaded = false;
function cbIsLoaded( ){
   isFlashLoaded = true;
}


// in AS3 
var retVal:int = ExternalInterface.call("cbIsLoaded");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...