Не срабатывает подтверждение при удалении.
#1
Отправлено 02 сентября 2011 - 12:40
Заранее говорю,что прочесала весь форум, но мне ничего не помогло.
Проблема заключается в следующем.
Есть кейс для удаления записи: отмечаю галочкой запись, жду Delete, возникает окно с подтверждением, в котором уже выделено Ок, соглашаюсь,запись удаляется.
Однако при написании тестов у меня возникла такая проблема: тест доходит до окошка с подтврждением, а дальше ничего не происходит, ничего не срабатывает,пока я сама не нажму Ok (мышкой или по нажатию Enter).
Указание $this->chooseOkOnNextConfirmation(); перед кликом непосредственно на кнопку Delete не помогает, не срабатывает и $this->keyPressNative("10");
Подскажите, пожалуйста, что я могу делать не так и почему ничего не срабатывает?
Кстати, на всякий случай, окно выглядит так: Selection_044.png 25,54К 39 Количество загрузок:
#2
Отправлено 02 сентября 2011 - 12:56
Похоже, что это не браузерный confirmation, а созданный средствами HTML, и тут надо использовать не confirmation-методы, а обычный click()Доброго времени суток!
Заранее говорю,что прочесала весь форум, но мне ничего не помогло.
Проблема заключается в следующем.
Есть кейс для удаления записи: отмечаю галочкой запись, жду Delete, возникает окно с подтверждением, в котором уже выделено Ок, соглашаюсь,запись удаляется.
Однако при написании тестов у меня возникла такая проблема: тест доходит до окошка с подтврждением, а дальше ничего не происходит, ничего не срабатывает,пока я сама не нажму Ok (мышкой или по нажатию Enter).
Указание $this->chooseOkOnNextConfirmation(); перед кликом непосредственно на кнопку Delete не помогает, не срабатывает и $this->keyPressNative("10");
Подскажите, пожалуйста, что я могу делать не так и почему ничего не срабатывает?
Кстати, на всякий случай, окно выглядит так: Selection_044.png 25,54К 39 Количество загрузок:
#3
Отправлено 02 сентября 2011 - 12:56
Сообщение отредактировал Freiman: 02 сентября 2011 - 12:57
#4
Отправлено 05 сентября 2011 - 08:55
$this->chooseOkOnNextConfirmation(); $this->click("//element/locator"); $confirm_text = $this->getConfirmation();
#5
Отправлено 06 сентября 2011 - 10:31
Это обычный javascript confirmation, просто он так в новых версиях Firefox выглядит :)
$this->chooseOkOnNextConfirmation(); $this->click("//element/locator"); $confirm_text = $this->getConfirmation();
А как вот мне этот локатор узнать? у меня никак не показывается он нигде.
#6
Отправлено 06 сентября 2011 - 14:29
Это клик по кнопке "Delete", для кнопок в confirm'е ненужны локаторы - их заменяет конструкция:...
А как вот мне этот локатор узнать? у меня никак не показывается он нигде.
$this->chooseOkOnNextConfirmation(); // ДО нажатия Delete $this->click("//xpath/to/delete"); // сам клик на кнопку Delete $confirm_text = $this->getConfirmation(); // ПОСЛЕ нажатия кнопки Delte - обработка confirm'aвместо первой строчки можно использовать:
$this->chooseCancelOnNextConfirmation();тогда в диалоге будет нажата кнопка отмены "Cancel"
#7
Отправлено 08 сентября 2011 - 07:55
Это клик по кнопке "Delete", для кнопок в confirm'е ненужны локаторы - их заменяет конструкция:
...
А как вот мне этот локатор узнать? у меня никак не показывается он нигде.$this->chooseOkOnNextConfirmation(); // ДО нажатия Delete $this->click("//xpath/to/delete"); // сам клик на кнопку Delete $confirm_text = $this->getConfirmation(); // ПОСЛЕ нажатия кнопки Delte - обработка confirm'aвместо первой строчки можно использовать:$this->chooseCancelOnNextConfirmation();тогда в диалоге будет нажата кнопка отмены "Cancel"
Ну я вот так все и делаю, только, когда доходит до того,что надо кликнуть на Ок, ничего не срабатывает и не происходит,пока я сама не кликну на эту кнопку. А когда вот я кликнула, у меня вылетает ошибка: "ERROR: There were no confirmations."
#8
Отправлено 08 сентября 2011 - 08:41
#9
Отправлено 13 сентября 2011 - 07:08
Тогда показывай код сценария и html-код страницы, на которой кнопка "Delete" находится
<span>Selected:</span>
<div class="buttons">
<div class="smallBtn" onclick="requests.toMarketplace()">
<div class="smallBtn" onclick="requests.fromMarketplace()">
<div class="smallBtn" onclick="requests.delete('Confirm Delete Requests')">
<div>DELETE</div>
</div>
<div class="smallBtn" onclick="requests.showMovePopup(441)">
<div class="smallBtn" onclick="requests.showMovePopup(441,true)">
</div>
deleteOrders: function () { if (confirm("Are you sure ot delete this orders?")) { var send_data = main_grid.getSelected(); ui.postData('/api/Orders/delete/', {ids:send_data.checked}, function (response) { if ( response.errors.length) { // вывести ошибки $(response.errors).each(function(i, item){ alert(item.errorStrg); }); } else { ui.reloadGridData(); } }); } }Вроде вот.
#10
Отправлено 13 сентября 2011 - 07:15
$this->fireEvent("//xpath/to/delete/btn","click");
#11
Отправлено 13 сентября 2011 - 12:50
попробуй тогда click по кнопке Delete заменить на fireEvent:
$this->fireEvent("//xpath/to/delete/btn","click");
хм.. все так же не работает =/
$this->click("xpath=//div[@class='checkbox']"); $this->chooseOkOnNextConfirmation(); $this->fireEvent("xpath=//div[@class='smallBtn' and contains( @onclick , 'orders.deleteOrders();')]","click"); $this->getConfirmation();
Однаков, доходит до 4й строчки, жмет на кнопку Delete и все по-пержнему ждет,пока я кликну на кнопку Ок.
#12
Отправлено 26 сентября 2011 - 07:18
я иногда устанавливаю проверки такого типа
if ($this->isAlertPresent()) {
$this->getAlert();
}
или
if ($this->isConfirmationPresent()) {
$this->getConfirmation();
$this->chooseOkOnNextConfirmation();
}
или пользуюсь
* @method array getAllWindowNames()
* @method array getAllWindowTitles()
для того чтобы узнать как селениум роспознал появившееся окно и потом на него переключаюсь ....
P.S. тесты на каком браузере проводите ? у меня были проблемы с 4м фаерфоксом. на 5м некоторые проблемы просто ищезли .....
#13
Отправлено 29 сентября 2011 - 07:29
FireFox 6.0.2 у меня.P.S. тесты на каком браузере проводите ? у меня были проблемы с 4м фаерфоксом. на 5м некоторые проблемы просто ищезли .....
#14
Отправлено 29 сентября 2011 - 07:36
#15
Отправлено 30 сентября 2011 - 04:46
Довольно странно, но в тот момент,когда появляется окно с подтверждением, тест как будто останавливается, и пока я не нажму ОК/Cancel у меня не проходит даже print_r($this->getAllWindowTitles());
Это потому что клик не считается законченным до тех пор пока не нажать cancel или OK в окне alert (соответственно скрипт ждет пока действие click выполнится). Именно поэтому команды chooseOk(Cancel)OnNextConfirmation вызываются перед кликом. Скорее всего проблема в версии браузера. Попробуйте на какой-нибудь более надежной и известной версии попробовать.
#16
Отправлено 30 сентября 2011 - 08:31
Кстати, да. Что-то я как-то сразу об этом не подумал. Selenium 1.0 вроде как себя не очень хорошо чувствует с версиями FF старше 3.6.х? Попробуй в версии FF 3.6.x выполнить скрипт...
Скорее всего проблема в версии браузера. Попробуйте на какой-нибудь более надежной и известной версии попробовать.
#17
Отправлено 30 сентября 2011 - 08:43
Кстати, да. Что-то я как-то сразу об этом не подумал. Selenium 1.0 вроде как себя не очень хорошо чувствует с версиями FF старше 3.6.х? Попробуй в версии FF 3.6.x выполнить скрипт
...
Скорее всего проблема в версии браузера. Попробуйте на какой-нибудь более надежной и известной версии попробовать.
у меня при запуске 3.6 появляется такая ошибка:
(firefox-bin:12874): Gtk-WARNING **: Failed to load type module: /usr/lib/gtk-2.0/2.10.0/menuproxies/libappmenu.so
/usr/lib/gtk-2.0/2.10.0/menuproxies/libappmenu.so: wrong ELF class: ELFCLASS64
С чем это может быть связано?
#18
Отправлено 04 октября 2011 - 05:54
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных