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

Фотография

Если много тестовых методов в одном классе, то они периодически падают


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

#1 prostooleg1

prostooleg1

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

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


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

Имею следующее тз:
1) Кнопка «Регистрация» видна и при клике ведет страницу с присутствием тега div.
2) Кнопка «Вход» видна и при клике ведет страницу с присутствием тега div.
3) Ссылка «Знакомства" и при клике ведет страницу с присутствием тега div..
4) Ссылка "Топ-100" видна и при клике ведет страницу с присутствием тега div.
5) Ссылка "Попутчики" видна и при клике ведет страницу с присутствием тега div.
6) Ссылка «Свидания» видна и при клике ведет страницу с присутствием тега div.
7) Ссылка «Друзья» видна и при клике ведет страницу с присутствием тега div.
8) Ссылка «Помощь» видна и при клике ведет страницу с присутствием тега div.
9) Ссылка «Бар знакомств» видна и при клике ведет страницу с присутствием тега div.
10) Ссылка «Для мобильного» видна и при клике ведет страницу с присутствием тега div.
11) Ссылка «Поиск попутчиков» видна и при клике ведет страницу с присутствием тега div.
12) Ссылка «О компании» видна и при клике ведет страницу с присутствием тега div.
13) Ссылка «Партнерам» видна и при клике ведет страницу с присутствием тега div.
14) Ссылка «Реклама» видна и при клике ведет страницу с присутствием тега div.
15) Ссылка «Вакансии» видна и при клике ведет страницу с присутствием тега div.

Реализовал вот так:

public class Test4 extends TestBase {

@Test

public void LoginPageTestNg_test1() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("a.ui-btn.ui-btn-big")).click();
wd.findElement(By.cssSelector("div"));
}



@Test

public void LoginPageTestNg_test2() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("a.o-auth")).click();
wd.findElement(By.cssSelector("div"));
}


@Test

public void LoginPageTestNg_test3() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("div#MenuNav ul li.page-www a")).click();
wd.findElement(By.cssSelector("div"));
}




@Test

public void LoginPageTestNg_test4() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("li.page-top a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
// wd.findElement(By.xpath("//a[contains(@href,'/top/parni.phtml')]"));
/// wd.findElement(By.xpath("//a[contains(@href,'/top/devushki.phtml')]"));
}


@Test

public void LoginPageTestNg_test5() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("li.page-travel a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
/// wd.findElement(By.xpath("//a[contains(@href,'/travel/')]")).click();
/// wd.findElement(By.xpath("//text[contains(@class,'list-title')]"));
}



@Test

public void LoginPageTestNg_test6() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("li.page-placecard a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
///wd.findElement(By.xpath("//a[contains(@href,'/placecard/')]")).click();
/// wd.findElement(By.xpath("//а[contains(@class,'fs25')]"));
}


@Test

public void LoginPageTestNg_test7() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("li.page-diary a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
///wd.findElement(By.xpath("//a[contains(@href,'/diary/')]")).click();
/// wd.findElement(By.xpath("//а[contains(@href,'diary/search.phtml')]"));
}



@Test

public void LoginPageTestNg_test8() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("li.link-support a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
////wd.findElement(By.xpath("//a[contains(@href,'/support.phtml')]")).click();
}


@Test

public void LoginPageTestNg_test9() throws Exception {

wd.get("http://www.mamba.ru/");
/// wd.findElement(By.xpath("//a[contains(@href,'/promo/toolbar.phtml')]")).click();
wd.findElement(By.cssSelector("li.BarMenu a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
}


@Test

public void LoginPageTestNg_test10() throws Exception {

wd.get("http://www.mamba.ru/");
/// wd.findElement(By.xpath("//a[contains(@href,'/mobile/main/')]")).click();
wd.findElement(By.cssSelector("li.WapMenu a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
}


@Test

public void LoginPageTestNg_test11() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("div#FindTravelers h2 a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
///wd.findElement(By.xpath("//a[contains(@href,'/travel/index.phtml')]")).click();
}


@Test

public void LoginPageTestNg_test12() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.cssSelector("div#FindTravelers h2 a")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
///wd.findElement(By.xpath("//a[contains(@href,'http://www.corp.mamba.ru/')]")).click();
}

@Test

public void LoginPageTestNg_test13() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.xpath("//a[contains(@href,'/partner/')]")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
}


@Test

public void LoginPageTestNg_test14() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.xpath("//a[contains(@href,'/adv/audience.phtml')]")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
}

@Test

public void LoginPageTestNg_test15() throws Exception {

wd.get("http://www.mamba.ru/");
wd.findElement(By.xpath("//a[contains(@href,'/company/job.phtml')]")).click();
///wd.wait(3000);
wd.findElement(By.cssSelector("div"));
}


}

Я при таком врианте в ФФ бывает запустишь и все тесты пройдут на отлично, бывает 2 не пройдут 13 пройдут или 8 не пройдут 7 пройдут. И что делать я не знаю, я пробовал уже через xpath все элементы определять и та же беда. Не буду же я каждый тестовый метод. С ошибками тесты валятся все с одинаковыми:

org.openqa.selenium.InvalidSelectorException: The given selector css=li.page-travel a is either invalid or does not result in a WebElement. The following error occurred:
[Exception... "An invalid or illegal string was specified" code: "12" nsresult: "0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)" location: "resource://fxdriver/modules/atoms.js Line: 6904"]; duration or timeout: 94 milliseconds
For documentation on this error, please visit: http://seleniumhq.or..._exception.html (это ошибка 5 теста)
Хотя если прогнать его по новой то ошибки вполне возможно и не будет. Бывает и все 15 пройдут без ошибок. Я уже и не знаю что делать, на класс же делать для каждого тестового метода :-( Кто сталкивался с такой проблемой?
  • 0

#2 Demetri

Demetri

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

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 06:42

Возможно на странице выполняются какие-либо ajax-запросы, в результате которых изменяются элементы - отсюда и ошибки. Возможно, простой поиск и клик по элементам на странице стоит заменить на ожидание их появления, и тогда проблема решится сама собой
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#3 prostooleg1

prostooleg1

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

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 24 октября 2011 - 07:47

Возможно на странице выполняются какие-либо ajax-запросы, в результате которых изменяются элементы - отсюда и ошибки. Возможно, простой поиск и клик по элементам на странице стоит заменить на ожидание их появления, и тогда проблема решится сама собой



После каждого клика я делал такую вещь : wd.wait(3000); и такое ощущение что действительно все тесты визуально проходят но асолютно всн валятся с такой ошибкой:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"li.BarMenu a"}; duration or timeout: 586 milliseconds
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html

Хотя цсс локатор по факту находит и на него нажимаем. Как я понимаю тут лучше не использовать время ожидания. Подскажите пожалуйста как сделать проверку пока элемент не будет true проверка не должна выполняться в java, буду очень признателен.
  • 0

#4 Demetri

Demetri

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

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 08:02

http://seleniumhq.or...r_advanced.html

Должно подойти как вариант с Explicit Waits, так и с Implicit Waits. Второй вариант выглядит как-то субъективно удобнее и компактнее :)

PS А вот использование жестких пауз - очень плохая идея: излишне растягивают тест по времени и делают его очень нестабильным
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#5 Rinss

Rinss

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

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

Отправлено 24 октября 2011 - 08:08

возможно не всегда успевают прогружатся страницы. Я для этого на питоне переписал do_command в библиотеке селениума(я так понял все методы ссылаются на него), чтобы при проверки на наличии обьекта, в случае если он не найден, проводилось дополнительная проверка через 1 сек
  • 0

#6 Demetri

Demetri

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

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 08:21

В WebDriver это реализовано в виде имплицитных ожиданий
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#7 Rinss

Rinss

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

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

Отправлено 24 октября 2011 - 08:27

значит еще проще)
  • 0

#8 prostooleg1

prostooleg1

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

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


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

http://seleniumhq.org/docs/04_webdriver_advanced.html

Должно подойти как вариант с Explicit Waits, так и с Implicit Waits. Второй вариант выглядит как-то субъективно удобнее и компактнее :)

PS А вот использование жестких пауз - очень плохая идея: излишне растягивают тест по времени и делают его очень нестабильным



Спасибо огромное Demetri. Сделал вторым вариантом. Все тестовые методы ходят отлично, не падают :-)
  • 0


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

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