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

Фотография

Запуск многих тестов на Selenium RC+Java+maven


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

#1 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 31 октября 2011 - 15:29

Хотелось бы узнать, как грамотно поступить в следующих ситуациях:

Пример. Есть очень много автоматизированных тестов.

Каждый раз при запуске автоматизированного теста создается новый профайл.
Соответственно много времени тратиться на его создание.
Как сделать так, чтобы 1 раз создать профайл и запускать именно его и в следущий раз не тратить постоянно столько времени на его создание ? К тому же тьму профайлов FF не выдерживает мой ПК ))
___
Еще вопрос, как грамотно делать автоматизированные тест кейсы.
Допустим надо проверить добавляется ли на портал данные об автомобиле.
Выполняем следующие шаги
1)Логинемся на портале
2)Добавляем данные об автомобиле
3)Если все хорошо, мы получили true, если что-то не сработало - false.

Надо ли после шага 3 выходить с портала. Просто получается, что мы не чистим кэш, поэтому остаемся залогинены. И кейс валится

_____
Заранее извиняюсь, что не искал ответы на форуме, просто очень устал на работе :(
  • 0

#2 Wolonter

Wolonter

    Постоянный участник

  • Members
  • PipPipPip
  • 205 сообщений
  • ФИО:Макс
  • Город:Екатеринбург


Отправлено 31 октября 2011 - 17:36

Нам руководитель разработки подсказал, что надо пользоваться всеми возможностями org.junit.runner
Я почти ничего не понял, но, судя по тому, что произошло, мы переделали @before @after , заюзали @beforeClass и @afterClass - получилось что браузер рестартует и перелогинивается не раз в тест, а раз в класс.

Если надо - завтра подсмотрю как это сделано и допишу.
  • 0

#3 Wolonter

Wolonter

    Постоянный участник

  • Members
  • PipPipPip
  • 205 сообщений
  • ФИО:Макс
  • Город:Екатеринбург


Отправлено 01 ноября 2011 - 05:26

Если надо - завтра подсмотрю как это сделано и допишу.

Ну да, классы тестов наследуются от класса в котором и определены должным образом @before @after @beforeClass @afterClass
Итого - рестарт браузера с перелогиниванием - раз в класс.
  • 0

#4 nstreltsov

nstreltsov

    Активный участник

  • Members
  • PipPip
  • 116 сообщений
  • ФИО:Стрельцов Николай Игоревич
  • Город:Москва


Отправлено 01 ноября 2011 - 07:36

Я писал для этого отдельный класс

import java.io.BufferedWriter;
import java.io.IOException;

import Helper.Report;

import com.unitedinternet.portal.selenium.utils.logging.LoggingDefaultSelenium;
import com.unitedinternet.portal.selenium.utils.logging.LoggingSelenium;

public class SeleniumSingl {

	public static final String HOST = "localhost";
	public static final int    PORT = 4444;
	public static final String BROWSER = "*firefox C:/Program Files (x86)/Mozilla Firefox/firefox.exe";
	public static final String URL = "URL";
	
	protected LoggingSelenium selenium;
	private static SeleniumSingl instance;
	protected BufferedWriter loggingWriter;

	private SeleniumSingl() {

		Report report = new Report();
		selenium = new LoggingDefaultSelenium(report.getProcessor());
		selenium.start();
		selenium.open("/");

	}

	public static SeleniumSingl getInstance() {
		if (null == instance) {
			instance = new SeleniumSingl();
		}
		return instance;
	}

	public LoggingSelenium getSelen() {
		return selenium;
	}

	public void tearDown() {
		selenium.stop();
		try {
			if (null != loggingWriter) {
				loggingWriter.close();
			}
		} catch (IOException e) {
			// do nothing
		}
	}
}

затем в начале каждого теста
selenium = SeleniumSingl.getInstance().getSelen();

для завершения работы селениума
SeleniumSingl.getInstance().tearDown();
  • 0

#5 Wolonter

Wolonter

    Постоянный участник

  • Members
  • PipPipPip
  • 205 сообщений
  • ФИО:Макс
  • Город:Екатеринбург


Отправлено 01 ноября 2011 - 07:53

Я писал для этого отдельный класс

затем в начале каждого теста
selenium = SeleniumSingl.getInstance().getSelen();

для завершения работы селениума
SeleniumSingl.getInstance().tearDown();


Угу, это логичный и правильный первый шаг.
Второй - тестовые классы наследуем от SeleniumSingl, а getSelen() и tearDown() помечаем как @before и @after, чтоб не копипастить.
  • 0

#6 snark

snark

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

  • Members
  • Pip
  • 62 сообщений

Отправлено 01 ноября 2011 - 11:01

все вышесказанное полезно, но собстевенно

Как сделать так, чтобы 1 раз создать профайл и запускать именно его и в следущий раз не тратить постоянно столько времени на его создание ? К тому же тьму профайлов FF не выдерживает мой ПК ))


Запускаешь ФФ с параметром -ProfileManager
Создаешь собственно профайл. Сохраняешь его туда, где твои скрипты его увидят.
Потом говоришь селениуму чтобы его использовал:
-firefoxProfileTemplate "path to the profile"
для мавена щас не помню конкретно, что-то типа:
<selenese
....
browser="*firefox" timeoutInSeconds="180"
firefoxProfileTemplate="${project.resorce.directory}/path to the profile"
...

кроме того в созданном профиле можно отключить все ненужное, что ускорит запуск тестов, и сделает их немного стабильнее.
вот тут несколько полезных, хоть и немного устаревших советов: http://girliemangalo...enium-rc-tests/

Сообщение отредактировал snark: 01 ноября 2011 - 11:13

  • 0


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

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