Зависание в методе Click
#1
Отправлено 07 февраля 2011 - 09:54
IWebElement dElement = driver.FindElement(By.Id("МОЙ ЭЛЕМЕНТ")); // Все прекрасно находится
dElement.Click(); // ВОТ ТУТ ВСЕ кликается и открывается модальный диалог , на след строчку кода не переходит !!!
IAlert alert2= driver.SwitchTo().Alert(); // Сюда уже не переходит .. , Что делать ?
Возможно опять же связано стем, что открывается модальное окно , кто знает как обойти напишите пожалуйста !
#2
Отправлено 07 февраля 2011 - 14:52
#3
Отправлено 07 февраля 2011 - 14:56
#5
Отправлено 08 февраля 2011 - 08:46
что за диалог появляется?
сделал пример (см аттач тестовой страницы)
Код такой !
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("Ваш путь /index.html");
driver.FindElement(By.Id("testBtn")).Click();
#6
Отправлено 08 февраля 2011 - 13:30
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#7
Отправлено 08 февраля 2011 - 13:38
http://code.google.c...s/detail?id=284
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#8
Отправлено 08 февраля 2011 - 13:54
Переопределяйте showModalDialog -- http://seleniumdeal....d-selenium.html
Видел эти ссылки ...
Если я буду переопределять, тогда у меня окно не будет модальным , а мне надо именно модальное
#9
Отправлено 08 февраля 2011 - 17:35
Исходные данные , Selenium 2 , C#
IWebElement dElement = driver.FindElement(By.Id("МОЙ ЭЛЕМЕНТ")); // Все прекрасно находится
dElement.Click(); // ВОТ ТУТ ВСЕ кликается и открывается модальный диалог , на след строчку кода не переходит !!!
IAlert alert2= driver.SwitchTo().Alert(); // Сюда уже не переходит .. , Что делать ?
Возможно опять же связано стем, что открывается модальное окно , кто знает как обойти напишите пожалуйста !
Итог - Тупик !
Задача - не просто вызвать модальный диалог, а еще и пощелкать у него внутри по всяким кнопочкам и свойствам ...
Даже если распаралелить потоки и перейти на текущий модальный диалог вот так driver.SwitchTo().Alert(); то каким образом найти в нем нужную кнопку или текст или поле ?
#10
Отправлено 08 февраля 2011 - 22:21
Я пробовал, у меня была похожая ситуация -- не помогает. Похоже, блокируется не поток Java, а объект WebDriver, он отказывается выполнять последующие команды.Даже если распаралелить потоки и перейти на текущий модальный диалог вот так driver.SwitchTo().Alert(); то каким образом найти в нем нужную кнопку или текст или поле ?
Если сходить по ссылке на описание реквеста, там можно найти сообщение, в котором товарищ рассказывает, как ему удалось обойти эту блокировку -- он перед кликом форкал процесс, и в одном из процессов кликал, а в другом ждал модальное окно, работал с ним, а потом завершал процесс.
А чем Вам так дорога модальность? После переопределения showModalDialog на open Вы прекрасно сможете покликать в новом окне, никаких проблем с этим не возникнет.
Только переключаться надо не switchTo().alert() , а switchTo().window()
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#11
Отправлено 09 февраля 2011 - 10:00
Я пробовал, у меня была похожая ситуация -- не помогает. Похоже, блокируется не поток Java, а объект WebDriver, он отказывается выполнять последующие команды.
Даже если распаралелить потоки и перейти на текущий модальный диалог вот так driver.SwitchTo().Alert(); то каким образом найти в нем нужную кнопку или текст или поле ?
Если сходить по ссылке на описание реквеста, там можно найти сообщение, в котором товарищ рассказывает, как ему удалось обойти эту блокировку -- он перед кликом форкал процесс, и в одном из процессов кликал, а в другом ждал модальное окно, работал с ним, а потом завершал процесс.
А чем Вам так дорога модальность? После переопределения showModalDialog на open Вы прекрасно сможете покликать в новом окне, никаких проблем с этим не возникнет.
Только переключаться надо не switchTo().alert() , а switchTo().window()
Дизайн продукта такой - менять нельзя.. Видимо для автотестов будем делать переопреденение в коде, чтобы оно было не модальным
#12
Отправлено 09 февраля 2011 - 10:27
window.showModalDialog = function( sURL,vArguments, sFeatures) { if(retVal!=null) return retVal; modalWin = window.open(sURL, 'modal', sFeatures) }
вы переопределяете стандартную JS функцию браузера showModalDialog, так что бы на самом деле открывалось не модальное окно, а обычное. Сам апликейшин при этом менять не надо
#13
Отправлено 09 февраля 2011 - 12:41
Если ещё точнее -- указанный кусочек кода можно, например, поместить в user-extension.js и при запуске selenium-сервера указать, что нужно использовать этот файл расширения.почитайте приведенную ссылку получше
window.showModalDialog = function( sURL,vArguments, sFeatures) { if(retVal!=null) return retVal; modalWin = window.open(sURL, 'modal', sFeatures) }
вы переопределяете стандартную JS функцию браузера showModalDialog, так что бы на самом деле открывалось не модальное окно, а обычное. Сам апликейшин при этом менять не надо
Или даже выполнить непосредственно из самого selenium, используя метод getEval
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#14
Отправлено 09 февраля 2011 - 13:46
почитайте приведенную ссылку получше
window.showModalDialog = function( sURL,vArguments, sFeatures) { if(retVal!=null) return retVal; modalWin = window.open(sURL, 'modal', sFeatures) }
вы переопределяете стандартную JS функцию браузера showModalDialog, так что бы на самом деле открывалось не модальное окно, а обычное. Сам апликейшин при этом менять не надо
В нашем случае нельзя использовать переопределение :( К сожалению
Причина проста
showModalDialog - стопит java script на странице и ждет ответа от того что введет пользователь в диалоговом окне и к сожалению на это многое завязано
window.open - выполняет код дальше
Так что воркэраунд в моем случае не работает
#15
Отправлено 10 февраля 2011 - 14:19
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных