![Фотография](https://secure.gravatar.com/avatar/99eeab1fdbc15eebb38ec0bd76c68e37?s=100&d=https%3A%2F%2Fsoftware-testing.ru%2Fforum%2Fpublic%2Fstyle_images%2Fmaster%2Fprofile%2Fdefault_large.png)
Если много тестовых методов в одном классе, то они периодически падают
#1
Отправлено 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 пройдут без ошибок. Я уже и не знаю что делать, на класс же делать для каждого тестового метода :-( Кто сталкивался с такой проблемой?
#2
Отправлено 24 октября 2011 - 06:42
#3
Отправлено 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, буду очень признателен.
#4
Отправлено 24 октября 2011 - 08:02
Должно подойти как вариант с Explicit Waits, так и с Implicit Waits. Второй вариант выглядит как-то субъективно удобнее и компактнее :)
PS А вот использование жестких пауз - очень плохая идея: излишне растягивают тест по времени и делают его очень нестабильным
#5
Отправлено 24 октября 2011 - 08:08
#6
Отправлено 24 октября 2011 - 08:21
#7
Отправлено 24 октября 2011 - 08:27
#8
Отправлено 24 октября 2011 - 11:56
http://seleniumhq.org/docs/04_webdriver_advanced.html
Должно подойти как вариант с Explicit Waits, так и с Implicit Waits. Второй вариант выглядит как-то субъективно удобнее и компактнее :)
PS А вот использование жестких пауз - очень плохая идея: излишне растягивают тест по времени и делают его очень нестабильным
Спасибо огромное Demetri. Сделал вторым вариантом. Все тестовые методы ходят отлично, не падают :-)
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных