Перейти к содержимому

Фотография

Как протестировать сортировку элементов на сайте


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Alena*

Alena*

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • ФИО:Алена Бартош
  • Город:Винница

Отправлено 09 июля 2012 - 10:19

Есть странна сайта hotels24.ua/hotels/гостиницы-область/Киевская/ на которой реализован функционал - Сортировка.
Необходимо протестировать правильность работы сортировок "Рейтинг" и "Звезды"
По рейтингу - после нажатия на кнопку гостиницы должни отсортироватся так что бы изначально шли все гостиницы с максимальным рейтингом потом с меньшим сеще меньшим и так далее.
По звездам - то же самое - сначала гостиницы с найбольшим количеством звезд и вниз по спадающей.

Задаа усложняется тем что как рейтинг так и количество звезд могут идти не равномерно.
Например: изначально может быть 2 гостиницы с рейтингом 10, потом 5 гостиниц с рейтингом 9,9 и после 3 гостиницы с рейтингом 9,8, а после обновления сайта могут появится 3 гостиницы с рейтингом 10 и 1 с рейтингом 9,8 а гостиниц с рейтингом 9,9 может вообще не стать.

Я еще полный нуб в тестировании поетому моей фантазии хватило только на такой кусок кода:

package com.example.tests;

import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.SeleneseTestCase;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Pattern;

public class Untitled extends SeleneseTestCase {
	@Before
	public void setUp() throws Exception {
		WebDriver driver = new FirefoxDriver();
		String baseUrl = "http://hotels24.ua/";
		selenium = new WebDriverBackedSelenium(driver, baseUrl);
	}

	@Test
	public void testUntitled() throws Exception {
		selenium.open("/hotels/%D0%B3%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B8%D1%86%D1%8B-%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C/%D0%9A%D0%B8%D0%B5%D0%B2%D1%81%D0%BA%D0%B0%D1%8F/");
		selenium.click("//div[@id='id-search-search_hotel_list_sort']/div/div[2]/div[2]/ul/li[3]/a/span");
		verifyTrue(selenium.isTextPresent("Рейтинг: 10"));
		verifyTrue(selenium.isTextPresent("Рейтинг: 9.9"));
		verifyTrue(selenium.isTextPresent("Рейтинг: 9.8"));
	}

	@After
	public void tearDown() throws Exception {
		selenium.stop();
	}
}
Понятно что так как надо он работать не буде. По сути он просто проверяет наличие элементов. А надо чтобы он к тому же проверял и их правильный порядок ( сначала "Рейтинг: 10" потом "Рейтинг: 9.9" и только поле них "Рейтинг: 9.8".

Подскажите плиз как это вообще можно реализовать.
  • 0

#2 velazkes

velazkes

    Новый участник

  • Members
  • Pip
  • 34 сообщений
  • ФИО:Малявко Виктор
  • Город:Минск

Отправлено 09 июля 2012 - 11:16

Есть странна сайта hotels24.ua/hotels/гостиницы-область/Киевская/ на которой реализован функционал - Сортировка.
Необходимо протестировать правильность работы сортировок "Рейтинг" и "Звезды"
По рейтингу - после нажатия на кнопку гостиницы должни отсортироватся так что бы изначально шли все гостиницы с максимальным рейтингом потом с меньшим сеще меньшим и так далее.
По звездам - то же самое - сначала гостиницы с найбольшим количеством звезд и вниз по спадающей.

Задаа усложняется тем что как рейтинг так и количество звезд могут идти не равномерно.
Например: изначально может быть 2 гостиницы с рейтингом 10, потом 5 гостиниц с рейтингом 9,9 и после 3 гостиницы с рейтингом 9,8, а после обновления сайта могут появится 3 гостиницы с рейтингом 10 и 1 с рейтингом 9,8 а гостиниц с рейтингом 9,9 может вообще не стать.

Я еще полный нуб в тестировании поетому моей фантазии хватило только на такой кусок кода:

package com.example.tests;

import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.SeleneseTestCase;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Pattern;

public class Untitled extends SeleneseTestCase {
	@Before
	public void setUp() throws Exception {
		WebDriver driver = new FirefoxDriver();
		String baseUrl = "http://hotels24.ua/";
		selenium = new WebDriverBackedSelenium(driver, baseUrl);
	}

	@Test
	public void testUntitled() throws Exception {
		selenium.open("/hotels/%D0%B3%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B8%D1%86%D1%8B-%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C/%D0%9A%D0%B8%D0%B5%D0%B2%D1%81%D0%BA%D0%B0%D1%8F/");
		selenium.click("//div[@id='id-search-search_hotel_list_sort']/div/div[2]/div[2]/ul/li[3]/a/span");
		verifyTrue(selenium.isTextPresent("Рейтинг: 10"));
		verifyTrue(selenium.isTextPresent("Рейтинг: 9.9"));
		verifyTrue(selenium.isTextPresent("Рейтинг: 9.8"));
	}

	@After
	public void tearDown() throws Exception {
		selenium.stop();
	}
}
Понятно что так как надо он работать не буде. По сути он просто проверяет наличие элементов. А надо чтобы он к тому же проверял и их правильный порядок ( сначала "Рейтинг: 10" потом "Рейтинг: 9.9" и только поле них "Рейтинг: 9.8".

Подскажите плиз как это вообще можно реализовать.


Приходит решение, типа изначально сделать типа List<WebElement> elements = driver.findElements(By by);. Т.е получить список эелементов. Затем продублировать этот список в еще один List и отсортировать его. Затем сравнить изначальный список с отсортированным и получить результат. Как-то так
  • 0

#3 astafev

astafev

    Новый участник

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Евгений

Отправлено 09 июля 2012 - 13:26


Понятно что так как надо он работать не буде. По сути он просто проверяет наличие элементов. А надо чтобы он к тому же проверял и их правильный порядок ( сначала "Рейтинг: 10" потом "Рейтинг: 9.9" и только поле них "Рейтинг: 9.8".

Подскажите плиз как это вообще можно реализовать.

Приходит решение, типа изначально сделать типа List<WebElement> elements = driver.findElements(By by);. Т.е получить список эелементов. Затем продублировать этот список в еще один List и отсортировать его. Затем сравнить изначальный список с отсортированным и получить результат. Как-то так

как-то по-моему это излишне сложно. А если во время сортировки порядок элементов с одинаковым аттрибутом поменяется?
Я обычно просто писал что такое:
WebElement table = driver.findElement(...);
for(int i = 1; true; i++) {
    try{
        //сравниваем i-й элемент с предыдущим
    } catch(NoSuchElementException e){
        break;
    }
}

  • 0

#4 LOLWUT

LOLWUT

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Lol Wut

Отправлено 09 июля 2012 - 16:06

Есть странна сайта hotels24.ua/hotels/гостиницы-область/Киевская/ на которой реализован функционал - Сортировка.
Необходимо протестировать правильность работы сортировок "Рейтинг" и "Звезды"
По рейтингу - после нажатия на кнопку гостиницы должни отсортироватся так что бы изначально шли все гостиницы с максимальным рейтингом потом с меньшим сеще меньшим и так далее.
По звездам - то же самое - сначала гостиницы с найбольшим количеством звезд и вниз по спадающей.

Задаа усложняется тем что как рейтинг так и количество звезд могут идти не равномерно.
Например: изначально может быть 2 гостиницы с рейтингом 10, потом 5 гостиниц с рейтингом 9,9 и после 3 гостиницы с рейтингом 9,8, а после обновления сайта могут появится 3 гостиницы с рейтингом 10 и 1 с рейтингом 9,8 а гостиниц с рейтингом 9,9 может вообще не стать.

1. Получение из БД списка отелей с заданными критериями, сохранение их в какой либо список с последующей сортировкой по звездам или рейтингу. Далее поэлементное сравнение выдачи с сайта с выдачей из базы данных.
2. Если база по каким-либо причинам недоступна - тест идет по странице/ам, проверяя то, что у текущего элемента(отеля) параметр сортировки(звезды/рейтинг и тп) ниже(или выше), чем у предыдущего элемента. Метод плох тем, что при ошибке в самой выборке из базы это не будет замечено.
  • 2

#5 astafev

astafev

    Новый участник

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Евгений

Отправлено 10 июля 2012 - 05:12

1. Получение из БД списка отелей с заданными критериями, сохранение их в какой либо список с последующей сортировкой по звездам или рейтингу. Далее поэлементное сравнение выдачи с сайта с выдачей из базы данных.
2. Если база по каким-либо причинам недоступна - тест идет по странице/ам, проверяя то, что у текущего элемента(отеля) параметр сортировки(звезды/рейтинг и тп) ниже(или выше), чем у предыдущего элемента. Метод плох тем, что при ошибке в самой выборке из базы это не будет замечено.

Вот это наверное идеальное решение для этой задачи. Обычно рейтинг считается не до одной цифры после запятой, на сайте только округляется. Единственное, по-моему, если база недоступна, то это косяк и тест имеет полное право упасть.
  • 1

#6 LOLWUT

LOLWUT

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Lol Wut

Отправлено 10 июля 2012 - 07:54

Вот это наверное идеальное решение для этой задачи. Обычно рейтинг считается не до одной цифры после запятой, на сайте только округляется. Единственное, по-моему, если база недоступна, то это косяк и тест имеет полное право упасть.

Если база недоступна, то сайт тоже работать не будет. Они берут данные из одной и той же БД.
  • 1


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных