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

Фотография

Selenium Grid + Запуск одновременно большого кол-ва сессий IE


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

#1 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 11 марта 2014 - 09:00

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

 

Есть необходимость реализовать некий вид нагрузки с одновременной работой большого кол-ва эксплореров.

Условие:

-работа веб приложения возможна только в IE;

-скрипт должен выполняться одновременно, кол-во пользователей порядка 100;

 

Почему не jmeter:

Реализовать приходится именно через selenium grid т.к. для работы необходим обязательно запущенный IE т.к. в личных кабинетах пользователей используется плагин для использования сертификатов безопасности который работает только под ie и только если ie реально запущен....

 

А теперь внимание вопрос: возможно ли на каждой ноде одновременный запуск и одновременная работа нескольких IE?

 

На данный момент я сконфигурировал на каждой ноде по 5 возможных одновременно запущенных IE, но grid как то странно с ними работает, он вроде бы запускает необходимое кол-во IE, но действия выполняет только в той сессии которая открыта, остальные либо валяться, либо действия в них выполняют только по окончанию действий в текущей отображаемой сессии.

 

Вопрос возник потому, что 100 виртуалок у меня нет и точно не будет, возможно что удастся получить 10-15 виртуалок, поэтому я наивно рассчитывал на каждой одновременную работу нескольких IE.... это невозможно? 

 

Использую Eclipse + TestNG + Selenium Grid

 

 


  • 0

#2 barancev

barancev

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

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


Отправлено 11 марта 2014 - 09:47

Да, можно запускать несколько экземпляров IE на одном ноде.

 

Почему у Вас не работает -- сложно сказать, если не покажете код, как инициализируются и используются сессии.


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

#3 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 11 марта 2014 - 09:52

Теоретически возможно, на практике стабильности достичь не удалось (с нативными эвентами).

 

С нативными эвентами сетать requireWindowFocus в true, либо использовать синтетические.

 

А вообще абстрагируйтесь от грида и селениума, и подсчитайте сколько браузеров может потянуть ваше hardware - возможно вы не на том пути.


  • 0

#4 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 11 марта 2014 - 09:53

вот один из тестов, остальные практически идентичны

 


public class SimpleDo1 {
 
 public String baseUrl;
 public RemoteWebDriver driver;
 
  @BeforeClass
 
  public void setUp() throws Exception {
  
  URL hubUrl = new URL("http://192.168.50.154:4444/wd/hub");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("internet explorer");
capabilities.setPlatform(Platform.WINDOWS);
driver = new RemoteWebDriver(hubUrl, capabilities);
 
 
 
 
  baseUrl = "ссылка";
  driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
 
  
}
 
 
@Test
public void OpenAndGetToPK() throws Exception {
  
 
  driver.get(baseUrl);
  driver.findElement(By.id("login")).sendKeys("025011_KSB");
  driver.findElement(By.id("password")).sendKeys("1111111");
  driver.findElement(By.id("loginBtn")).click();  
  
// проверяем существование элемента, который должен быть после обычного логина и после промежуточной страницы.
  if (driver.findElements(By.xpath("//em[@class='x-btn-split x-unselectable']")).size() < 1) { 
      // вводим причину принудительного логина и настойчиво логинимся
     driver.findElement(By.name("pushOutMessage")).sendKeys("извините, это автотест!!!");
     driver.findElement(By.xpath("//*[@id='loginBtn']")).click();
  }
 
  // идем дальше     
  
  driver.findElement(By.xpath("//em[@class='x-btn-split x-unselectable']")).click();
 
  //driver.findElement(By.linkText("Текстовый документ")).click();
  driver.findElement(By.id("ND")).sendKeys("123");
  driver.findElement(By.id("DD")).sendKeys("09.03.2014", Keys.ENTER);
  driver.findElement(By.id("btnSave")).click();
 
  driver.findElement(By.id("btnClose")).click();
  driver.findElement(By.xpath("//button[contains(@class, 'x-btn-text') and text() = 'OK']")).click();
 
  
  driver.findElement(By.id("filterDocumentStartDate")).sendKeys("09.03.2014", Keys.ENTER);
  driver.findElement(By.id("filterDocumentEndDate")).sendKeys("09.03.2014", Keys.ENTER);
  driver.findElement(By.xpath(".//a[@title='Применить']")).click();
 
  driver.findElement(By.xpath(".//input[@title='Выбрать все']")).click();
  driver.findElement(By.id("menu")).click();
  driver.findElement(By.xpath(".//option[contains(text(),'На утверждение')]")).click();
  driver.findElement(By.xpath(".//button[contains(text(), 'Подписать')]")).click();  
  Thread.sleep(20000);
 
 
}
 
 
 
  @AfterClass
 
public void teardown(){
driver.quit();
}
 
}
 

 

 


  • 0

#5 barancev

barancev

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

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


Отправлено 11 марта 2014 - 09:54

С нативными эвентами сетать requireWindowFocus в true, либо использовать синтетические.

 

C настройкой requireWindowFocus=true несколько браузеров на одной машине очевидно запускать нельзя, потому что не смогут они быть все одновременно в фокусе.


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

#6 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 11 марта 2014 - 10:00

А без нее нужный браузер никогда не получит фокус :) А с requireWindowFocus=true все "моргает" как положено. Если еще повесить синхронизацию на эвенты клавы-мыши то вообще будет все тип-топ.

 

ТС - а покажите как параллелите?


  • 0

#7 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 11 марта 2014 - 10:24

а параллелю через testng.xml

 

<suite name="Suite1" parallel="instances" thread-count="10" verbose="1" >
  <test name="Pachka"   >
    <packages>
      <package name="many.users.goinWild" />
   </packages>
 </test>
</suite>
 
p.s. в данный момент у меня 3 ноды, по 5 ИЕ на каждую настроено

  • 0

#8 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 11 марта 2014 - 10:37

--


  • 0

#9 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 11 марта 2014 - 11:31

Если честно я не совсем понимаю принцип работы parallel="instances", попробуйте поменяйте на более прозрачный "classes".


  • 0

#10 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 11 марта 2014 - 11:50

скажите, а я правильно понял, что мне надо сделать вот так в требованиях к тесту? 

 

capabilities.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS,true);

 


  • 0

#11 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 11 марта 2014 - 11:56

Ну это как вариант.

Что бы убедиться, что это не траблы ИЕ, попробуйте запустить параллельно в ФФ.


  • 0

#12 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 11 марта 2014 - 14:53

к сожалению работа возможно исключительно в IE, под FF я даже не смогу авторизоваться.

 

по поводу параметра: capabilities.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS,true); 

с этим параметром тесты по всей видимости пытаются перехватить фокус друг у друга и "ужас" начинается уже на этапе авторизации пользователей.

 

На данный момент при запуске сьюта с 14й тестами, валятся где то 1-2, но это я грешу на какую то виртуалку на которую хаб направляет выполнение этих тестов (виртуалки слабенькие). Но на данный момент на лицо другая проблема: тесты запускаются одновременно это да, но синхронности в действиях вообще нет, т.е. если рассматривать те тесты которые отправлены на определенную ноду тесты выполняются совсем не синхронно


  • 0

#13 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 12 марта 2014 - 06:44

А синхронности и не будет. Кто вам сказал что будет синхронность? Её надо реализовывать уже внутри самих тестов.


  • 0

#14 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 12 марта 2014 - 07:10

Никто мне не обещал конечно, это я так наивно предположил... Буду признателен, если подскажете каким образом это можно реализовать?


  • 0

#15 raa

raa

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Алексей

Отправлено 13 марта 2014 - 05:49

Спасибо всем, кто пытался помочь!


  • 0


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

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