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

Фотография

Как уменьшить время работы теста?


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

#1 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 14 декабря 2011 - 06:43

Здравствуйте!
Столкнулся со следующей ситуацией.
Я пишу тесты используя Selenium 2(WebDriver), и заметил что при работе с циклом while работа теста затормаживается пример:
while (driver.FindElement(By.Id(Item)).Displayed)
{
 //действия                   
}
Когда объект не существует тест долго думает. Есть ли какой нибудь другой вариант ?
Основная задача: делать что то, пока объект есть.
  • 0

#2 tj_slash

tj_slash

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

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Вакуленко Артем Алексеевич
  • Город:Благовещенск

Отправлено 14 декабря 2011 - 06:50


$element = driver.FindElement(By.Id(Item));

while ($element.Displayed)

{

 //действия                   

}


  • 0

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 14 декабря 2011 - 14:19

Думает он скорее всего в методе FindElement, потому что включены имплицитные ожидания.
Вам следует сделать вспомогательный метод для "быстрой проверки отсутствия элемента", который временно отключает имплицитные ожидания, проверяет, и включает обратно.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#4 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 16 декабря 2011 - 04:32

Думает он скорее всего в методе FindElement, потому что включены имплицитные ожидания.
Вам следует сделать вспомогательный метод для "быстрой проверки отсутствия элемента", который временно отключает имплицитные ожидания, проверяет, и включает обратно.

А как это можно сделать? Точнее как быстро проверить отсутствие элемента?)))
  • 0

#5 Jenka156

Jenka156

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

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 19 декабря 2011 - 06:11

я использую вот такое:
public boolean IsElementPresent(String element_xpath)
    {

	try{
		driver.findElement(By.xpath(element_xpath));
		return true;
	}
	catch(NoSuchElementException e){
		return false;
	}
	  	
    }


получается что функция возвращает true в случае присутствия элемента и false если он отсутствует на странице
  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 19 декабря 2011 - 12:18


Думает он скорее всего в методе FindElement, потому что включены имплицитные ожидания.
Вам следует сделать вспомогательный метод для "быстрой проверки отсутствия элемента", который временно отключает имплицитные ожидания, проверяет, и включает обратно.

А как это можно сделать? Точнее как быстро проверить отсутствие элемента?)))


public boolean isElementPresent(By locator) {
     driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
      try {
      	return driver.findElements(locator).size() > 0;
      } finally {
      	driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }
  }


(код на Java, переведите на C# самостоятельно)
  • 1
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 20 декабря 2011 - 07:44



Думает он скорее всего в методе FindElement, потому что включены имплицитные ожидания.
Вам следует сделать вспомогательный метод для "быстрой проверки отсутствия элемента", который временно отключает имплицитные ожидания, проверяет, и включает обратно.

А как это можно сделать? Точнее как быстро проверить отсутствие элемента?)))


public boolean isElementPresent(By locator) {
     driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
      try {
      	return driver.findElements(locator).size() > 0;
      } finally {
      	driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }
  }


(код на Java, переведите на C# самостоятельно)

Спасибо
  • 0


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

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