
Тест проходит успешно, но описанные действия для страницы не выполняют
#1
Отправлено 12 августа 2011 - 14:21
При переходе с шага на шаг линка остается неизменяемая, просто осуществляется переход на следующий таб.
На первом табе нажимается кнопка Next, а на втором табе кнопка Next уже не хочет нажиматься, радиобаттоны не хотят селектиться.
Хотя при проверке Selenium.IsElementPresent(); удачно проходит и радиобатон и кнопка. Селениум видит элементы и по чистому айди, и по икс-пасу.
Но действия по клику не осуществляется.
Пробовала наводить фокус на элемент и тогда кликать по нему. Но тоже не помогает. В целом тест проходит успешно (проверка наличия элементов срабатывает), но действия не производятся.
Как с этим бороться?
#2
Отправлено 12 августа 2011 - 15:16
А локаторы для элементов на табах разные? Возможно нужно еще смотреть isVisible параметр для нужных элементов.Мне необходимо протестировать Checkout steps.
При переходе с шага на шаг линка остается неизменяемая, просто осуществляется переход на следующий таб.
На первом табе нажимается кнопка Next, а на втором табе кнопка Next уже не хочет нажиматься, радиобаттоны не хотят селектиться.
Хотя при проверке Selenium.IsElementPresent(); удачно проходит и радиобатон и кнопка. Селениум видит элементы и по чистому айди, и по икс-пасу.
Но действия по клику не осуществляется.
Пробовала наводить фокус на элемент и тогда кликать по нему. Но тоже не помогает. В целом тест проходит успешно (проверка наличия элементов срабатывает), но действия не производятся.
Как с этим бороться?
#3
Отправлено 12 августа 2011 - 15:21
"//div[@id='tabStep2']//a[@id='btnNext']" или "//div[@id='tabStep2']//input[@id='btnNext']"Хотя подозреваю, что кнопка все-таки это тег <a>
#4
Отправлено 15 августа 2011 - 06:03
кнопка Nezt имеет одинаковый локатор на всех табах. Но, к примеру, на первом табе присутсвует выпадающий список, на втором - радиобатоны. Разумеется локаторы у них разные, но на втором табе радиобатон не выбирается.А локаторы для элементов на табах разные? Возможно нужно еще смотреть isVisible параметр для нужных элементов.
К кнопке Next на каждом табе обращаюсь по-разному: на первом - по айди, на втором - по иск-пассу и т.п.
да, кнопки Next имеют одинаковый айди. Чуть выше уже описала, что обращаюсь к кнопке каждый раз разным способом.Подозреваю, что все кнопки Next имеют одинаковы айди, а поскольку страница не перезагружается, то элементы просто перекрываются друг другом визуально.
Спасибо, буду пробовать.Попробуйте в локаторе указать таб, на котором лежит кнопка.
#5
Отправлено 15 августа 2011 - 06:21
//li[@id='opc-billing']//button[@class='button green-button']
На втором:
//li[@id='opc-shipping']//button[@class='button green-button']
проверка наличия этих кнопок функцией IsElementPresent возвращает true, но опять же таки - на втором шаге действия не производятся. Обновлять страницу нельзя, потому что идет возврат на первый таб.
Пробовала устанавливать фокус на кнопку и нажимать - эффекта ноль.
Что делать? :(
#6
Отправлено 15 августа 2011 - 08:05
Ведь они априори есть на странице, и isElementPresent всегда вернет true. Но судя по всему после нажатия кнопки Next у вас идет обработка ajax запроса.
Попробуйте сначала поставить банальную паузу, и если это сработает продумать, как именно дождаться кнопки. (Возможно, как говорил Vitalik_V , дождаться например свойства Visible=true.)
#7
Отправлено 15 августа 2011 - 12:02
Failed.
А как дождаться появления кнопки? Какой метод использовать?
WaitForPageToLoad() не подходит, потому что по сути страница не обновляется, тест фэйлится.
#8
Отправлено 15 августа 2011 - 12:25
public void waitForElement(java.lang.String elementName) throws InterruptedException { for (int second = 0; ; second++) { if (second >= 30) fail(" Element \"" + elementName + "\" isn't present"); try { if (selenium.isElementPresent(elementName)) break; } catch (Exception e) { } Thread.sleep(1000); } }
#9
Отправлено 15 августа 2011 - 12:59
Я бы рекомендовала несколько переопределить этот метод, поскольку ожидание указанных здесь 30-ти секунд может по факту занять несколько минут ( к примеру в ИЕ, с локаторами на Xpath.) Например вот такна Java это выглядит примерно так
public void waitForElement(java.lang.String elementName) throws InterruptedException { for (int second = 0; ; second++) { if (second >= 30) fail(" Element \"" + elementName + "\" isn't present"); try { if (selenium.isElementPresent(elementName)) break; } catch (Exception e) { } Thread.sleep(1000); } }
public void waitForElementPresent(String locator, int time) throws InterruptedException{ long start = System.currentTimeMillis(); while (System.currentTimeMillis() < start + time) { if ((selenium.isElementPresent(locator))) return; Thread.sleep(1000); } throw new AssertionError("The element " + locator + " still isn't present"); }Такой метод позволит вам контролировать время выполнения теста, поскольку ждать элемента вы будете ровно столько, сколько укажете в параметре time.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных