Проверка появляющихся значений при вводе поискового запроса
#1
Отправлено 11 июля 2013 - 07:30
Подскажите пожалуйста каким набором команд можно добиться появления предварительных результатов при вводе поискового запроса в строку поиска и соответственно сделать clickAndWait или verifyText.
(Я не в коем случае не хочу проводить рекламу какого либо портала, в частности где нужно проверить данный механизм)
На главной странице портала твзавр.ру (набирать латинецей) в шапке с правой стороны, нужно реализовать данную проверку.
#2
Отправлено 11 июля 2013 - 07:32
Сообщение отредактировал Alexdevid: 11 июля 2013 - 07:33
#3
Отправлено 11 июля 2013 - 10:40
Добрый день.
Подскажите пожалуйста каким набором команд можно добиться появления предварительных результатов при вводе поискового запроса в строку поиска и соответственно сделать clickAndWait или verifyText.
(Я не в коем случае не хочу проводить рекламу какого либо портала, в частности где нужно проверить данный механизм)
На главной странице портала твзавр.ру (набирать латинецей) в шапке с правой стороны, нужно реализовать данную проверку.
Результаты поиска, точнее подсказки находятся по следующему пути xpath:
/body/div[@class='a1']/div[@class='sq_preview']
Есть проблема: пока попапчик хоть один раз не появится на странице, тэг будет отсутствовать.
Если хоть один раз попапчик появился, всё - тэг есть всегда. Скрытие происходит по стилю "display: none;"
Если смотреть через Selenium WebDriver (JAVA), то я бы сделал так:
WebElement searchBlock = driver.findElement(By.className("a1")); // блок, в котором попапчик появляется List<String> classNamesList = new ArrayList<String>(); // список классов в блоке. int count = 0; // счётчик while (!classNamesList.contains("sq_preview") || count < 5) { // пока список классов не содержит нужный нам класс или не прошло 5 секунд classNamesList.clear(); // очищаем предыдущий контент списка, т.к. каждую секунду мы его заново формируем List<WebElement> resultList = searchBlock.findElements(By.tagName("div")); // все вебэлементы блока for (WebElement result : resultList) { classNamesList.add(result.getAttribute("className")); // забираем их класснэймы } try { Thread.sleep(1000); // ждём секунду. } catch (Exception e) { } } if (classNamesList.contains("sq_preview")) { // если класс всё-таки нашли в течение 5 секунд WebElement result = searchBlock.findElement(By.className("sq_preview")); // берём этот класс List<WebElement> resultList = result.findElements(By.tagName("div")); // берём список элементов, содержащих названия фильмов. ... } else { commonLog("PopUp doesn't exist"); // если класс не нашли, значит, попапчик не появился. }На месте многоточий в нашем распоряжении находятся все WebElement-ы, содержащие названия фильмов. Можно делать с ними всё, что угодно!
А каким инструментом Вы пользуетесь? А то я написал код, не спросив :)
#4
Отправлено 12 июля 2013 - 06:19
Использую правда пока что Selenium IDE
#5
Отправлено 12 июля 2013 - 07:08
Спасибо за ответ!
Использую правда пока что Selenium IDE
Selenium IDE, насколько мне изменяет память, поддерживает куски кода.
Рекомендую постепенно переползать с Selenium IDE на какую-нибудь независимую платформу и программировать автотесты с использованием библиотеки selenium.
Появится больше возможностей + искать элементы можно не только по xpath (помню свои мучения, связанные с написанием длинных путей и прописыванием всех необходимых атрибутов).
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных