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

Аудит и оптимизация QA-процессов
онлайн, начало 4 декабря
Практикум по тест-дизайну 2.0
онлайн, начало 4 декабря
Логи как инструмент тестировщика
онлайн, начало 30 ноября
Тестирование REST API
онлайн, начало 30 ноября
Фотография

webdriver простое ветвление


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

#1 raa

raa

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

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

Отправлено 20 февраля 2014 - 07:42

Друзья, всех приветствую. Я совсем новичек в работе с webdriver. Никак не могу составить рабочее условие "если и то"... Понимаю, что вопрос возможно совсем простой, но 2 дня гуглю и так и не могу найти рабочее решение, в ООП тоже очень слаб.

 

условие:

 

есть несложный тест, который выполняет последовательно авторизацию на сайте и далее выполняет некую последовательность действий.

 

необходимо:

 

учитывать, что после нажатия кнопки авторизации, возможно появится предупреждающая страничка  с неким текстом  и с кнопками "ВХОД" и "ОТМЕНА". Если страничка появилась необходимо нажать на кнопку ВХОД и далее идти по списку действий теста, если страничка не отобразилась, то необходимо сразу переходить к дальнейшим действия теста.

 

Для простоты решил, что судить о появлении страничку можно по уникальному тексту который отображается на странице, но как построить условие 

если есть текст то делать то

а если текста нет то ничего не делать и идти дальше не понимаю

 

 

public class OpenAndAuthorise_AIS1 {

  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();
 
  @Before
  public void setUp() throws Exception {
    
System.setProperty("webdriver.ie.driver", "C:\\IEDriverserver.exe");
 
//driver = new ChromeDriver();
//driver = new FirefoxDriver();
driver = new InternetExplorerDriver();
 
    baseUrl = "открываемая страничка";
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
   
      
           
  }
  
    @Test
  public void testOpenAndGetTologinScreen3() throws Exception {
    driver.get("открываемая страничка");
    driver.findElement(By.name("login")).sendKeys("1234567");
    driver.findElement(By.name("password")).sendKeys("1111111");
    driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
    
вот тут может появится или не появится предупреждение
    
    driver.findElement(By.id("ext-gen26")).click();
    driver.findElement(By.xpath("/html/body/div[4]/div[2]/div/table/tbody/tr/td/table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/em")).click();
    driver.findElement(By.id("ext-gen73")).click();
    driver.findElement(By.id("btnSave")).click();
    driver.findElement(By.id("NumberDoc")).sendKeys("123456");
 

  • 0

#2 biomaks

biomaks

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

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


Отправлено 20 февраля 2014 - 07:49

У объекта webelement который возвращает findElement() есть метод isDisplayed() он вам поможет 


  • 0

#3 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 07:59

У объекта webelement который возвращает findElement() есть метод isDisplayed() он вам поможет 

 

В данном случае фейл. Если вместо ожидания появляется какая-то левая страничка, то findElement вернёт NoSuchElementException. Т.е. Вы даже не сможете проверить .isDisplayed()

 

Я бы в данном случае после клика проверял количество окон. Если одно, то всё ОК. Если два, то обрабатываем второе окно.

Работа с окнами ведётся через Set<String> windowHandlers = driver.getWindowHandlers();

Порядок хэндлеров в коллекции соответствует списку PIDов процессов соответствующих окон, отсортированному по возрастанию.

Соответственно, основное окно всегда будет иметь первый хэндлер. Все дочерние - со второго и дальше.


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#4 raa

raa

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

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

Отправлено 20 февраля 2014 - 08:07

Окно, если я все правильно понимаю - одно, просто возможен вариант когда отобразиться лишняя страничка


  • 0

#5 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 08:08

//driver = new ChromeDriver();
//driver = new FirefoxDriver();
driver = new InternetExplorerDriver();

Ужас! Кто Вас этому научил?

 

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

Не знаю, как посчитают остальные, но, по-моему, 60 секунд - многовато.
 

@Test
public void testOpenAndGetTologinScreen3() throws Exception {
    driver.get("открываемая страничка");
    driver.findElement(By.name("login")).sendKeys("1234567");
    driver.findElement(By.name("password")).sendKeys("1111111");
    driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
    
List<String> handlers = new ArrayList<String>(driver.getWindowHandles());
if (handlers.size() > 1) {
driver.switchTo().window(handlers.get(1));
обрабатываете второе окно;
driver.switchTo().window(handlers.get(0));
} else { // второе окно не появилось - продолжаем работать с текущим.

     driver.findElement(By.id("ext-gen26")).click();
    driver.findElement(By.xpath("/html/body/div[4]/div[2]/div/table/tbody/tr/td/table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/em")).click();
    driver.findElement(By.id("ext-gen73")).click();
    driver.findElement(By.id("btnSave")).click();
    driver.findElement(By.id("NumberDoc")).sendKeys("123456");
}
}

Ну, это как вариант. Вполне себе рабочий.


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#6 raa

raa

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

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

Отправлено 20 февраля 2014 - 08:14

ссылку торопился спрятать - поэтому недоудалил... 


  • 0

#7 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 08:18

Окно, если я все правильно понимаю - одно, просто возможен вариант когда отобразиться лишняя страничка


То есть возможны два варианта поведения логина:
1) страница 1 - страница 2
2) страница 1 - страница апрува - страница 2

Так?
Если да, то я бы предложил искать элемент

driver.findElement(By.id("ext-gen26")).click();

немного по-другому.
 

List<WebElement> lst = driver.findElements(By.id("ext-gen26"));
if (lst.isEmpty()) {
   обрабатываем страницу апрува
} else {
   lst.get(0).click();
   и дальше работаем по короткому варианту.
}

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#8 raa

raa

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

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

Отправлено 20 февраля 2014 - 09:38

с этим вариантом тест останавливается на моменте нажатия кнопки авторизации, как раз перед возможным появлением промежуточной страницы
 
 
OpenAndAuthorise_AIS1
OpenAndAuthorise_AIS1
testOpenAndGetTologinScreen3(OpenAndAuthorise_AIS1)
org.openqa.selenium.NoSuchElementException: Unable to find element with name == login (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.25 seconds
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:12:12'
 
 
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=7, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:41752/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
 
at java.lang.reflect.Constructor.newInstance(Unknown Source)
 
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
 
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
 
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
 
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
 
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:380)
 
at org.openqa.selenium.By$ByName.findElement(By.java:305)
 
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
 
at OpenAndAuthorise_AIS1.testOpenAndGetTologinScreen3(OpenAndAuthorise_AIS1.java:46)
 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 
at java.lang.reflect.Method.invoke(Unknown Source)
 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
 
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
 
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
 
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
 
 
 
java.lang.IllegalMonitorStateException


  • 0

#9 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 10:24

с этим вариантом тест останавливается на моменте нажатия кнопки авторизации, как раз перед возможным появлением промежуточной страницы
 
OpenAndAuthorise_AIS1
OpenAndAuthorise_AIS1
testOpenAndGetTologinScreen3(OpenAndAuthorise_AIS1)
org.openqa.selenium.NoSuchElementException: Unable to find element with name == login (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.25 seconds
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:12:12' 

 

С каким - этим?

Я два варианта предложил.

 

Покажите код.

NoSuchElement в случае с findElements() возвратиться не может по определению! 


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#10 raa

raa

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

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

Отправлено 20 февраля 2014 - 10:28

С последним варинатом, что вы предложили по попытке искать кнопку

 

 @Test
  public void testOpenAndGetTologinScreen3() throws Exception {
    driver.get("ссылка");
    driver.findElement(By.name("login")).sendKeys("123456");
    driver.findElement(By.name("password")).sendKeys("1111111");
    driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
     
    List<WebElement> lst = driver.findElements(By.id("ext-gen26"));
    
    if (lst.isEmpty()) {
       //обрабатываем страницу апрува
    driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
   
    } else {
       lst.get(0).click();
       //и дальше работаем по короткому варианту.
       
    driver.findElement(By.xpath("/html/body/div[4]/div[2]/div/table/tbody/tr/td/table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/em")).click();
    driver.findElement(By.id("ext-gen73")).click();
 
 
В таком исполнении, если отображается промежуточная страница, проходит ожидание в районе 30-45 секунд, затем нажирмается кнопка ВХОД и далее тест валится:
 
OpenAndAuthorise_AIS1
OpenAndAuthorise_AIS1
testOpenAndGetTologinScreen3(OpenAndAuthorise_AIS1)
java.lang.IllegalMonitorStateException
 

 

 

 

  • 0

#11 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 10:30

В какой строчке вылетает?

Точно покажите (изменив свой ответ).

 


driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");

Странная конструкция.

Не проще было просто driver.findElement(By.id("LoginBtn")).click(); ?


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#12 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 10:41

 

С последним варинатом, что вы предложили по попытке искать кнопку

 

 @Test
  public void testOpenAndGetTologinScreen3() throws Exception {
    driver.get("ссылка");
    driver.findElement(By.name("login")).sendKeys("123456");
    driver.findElement(By.name("password")).sendKeys("1111111");
    driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
     
    List<WebElement> lst = driver.findElements(By.id("ext-gen26"));
    
    if (lst.isEmpty()) {
       //обрабатываем страницу апрува
    driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
   
    } else {
       lst.get(0).click();
       //и дальше работаем по короткому варианту.
       
    driver.findElement(By.xpath("/html/body/div[4]/div[2]/div/table/tbody/tr/td/table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/em")).click();
    driver.findElement(By.id("ext-gen73")).click();
В таком исполнении, если отображается промежуточная страница, проходит ожидание в районе 30-45 секунд, затем нажирмается кнопка ВХОД и далее тест валится:
 
OpenAndAuthorise_AIS1
OpenAndAuthorise_AIS1
testOpenAndGetTologinScreen3(OpenAndAuthorise_AIS1)
java.lang.IllegalMonitorStateException

 

 

Попробуйте заменить жаваскриптовый поиск на ХРАТН.

 driver.findElement(By.id("LoginBtn")).click(); 

Пройдитесь дебагом и чётко скажите, в какой строчке падает?

 

Предположение, что у Вас страница апрува не успевает прогрузиться.

Плюс, пожалуйста, отредактируйте сей ужас:

 

driver.findElement(By.xpath("/html/body/div[4]/div[2]/div/table/tbody/tr/td/table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/em")).click();

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#13 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 20 февраля 2014 - 10:59

я так и не понял, появляется страничка или div(iframe), который собой закрывает основную страницу. Если не окно, то можно использовать expected conditions, чтобы ожидать тот элемент и тогда с ним работать.


  • 0

#14 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 11:22

я так и не понял, появляется страничка или div(iframe), который собой закрывает основную страницу. Если не окно, то можно использовать expected conditions, чтобы ожидать тот элемент и тогда с ним работать.

 

Можно ждать долго. До самого падения по implicitlyWait

Тут ведь этот "доп.элемент" может появиться, а может и не появиться. Заранее неизвестно.

 

Имхо, проще считать по умолчанию, что идём по короткому пути. Только элемент, вместо которого может появиться вставка, в этом случае нужно искать по findElementS, потому что список может быть и пустым. Но зато иксепшенов не будет и легко обрабатывается (если есть элемент => размер списка > 0; если появилась вставка => размер списка = 0).


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#15 raa

raa

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

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

Отправлено 20 февраля 2014 - 14:05

Я немного видоизменил критерий определения появления промежуточной страницы т.к. по предложенному вами варианте почему то не работало. Т.к. у меня на первом экране и на промежуточном (который может появится, а может и нет) есть одинаковая кнопка ВХОД, я выбрал определение по этой кнопке.

 

 
driver.findElement(By.name("login")).sendKeys("12345");
    driver.findElement(By.name("password")).sendKeys("1111111");
    //driver.navigate().to("javascript:document.getElementById('LoginBtn').click()");
    driver.findElement(By.xpath("//*[@id='loginBtn']")).click();
    
    List<WebElement> lst = driver.findElements(By.xpath("//*[@id='loginBtn']"));
    
    if (lst.isEmpty()) {
       //обрабатываем страницу апрува
   
    driver.findElement(By.name("pushOutMessage")).sendKeys("извините, это автотест!!!");
    driver.findElement(By.xpath("//*[@id='loginBtn']")).click();
   
  } else {
     lst.get(0).click();
         
     
      
    driver.findElement(By.id("ext-gen26")).click();
     далее идёт основной тест

 

 

при таком варианте исполнения тест отрабатывает до конца только, если промежуточная страница появилась, а если промежуточная страница не появилась, то тест останавливается перед выполнением действия driver.findElement(By.id("ext-gen26")).click(); и валится экспешн:

 

OpenAndAuthorise_AIS1
OpenAndAuthorise_AIS1
testOpenAndGetTologinScreen3(OpenAndAuthorise_AIS1)
org.openqa.selenium.NoSuchElementException: Unable to find element with name == pushOutMessage (WARNING: The server did not provide any stacktrace information)
 

 

 

 
 

  • 0

#16 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 20 февраля 2014 - 18:02

Ошибка в том, что Вы забираете лист вебэлементов, потом изменяете дом-дерево, а потом обращаетесь к элементу листа, которого уже не существует!
Кнопку надо искать повторно.

Просьба сделать следующие скриншоты:
1) форма логина
2) промежуточная страница
3) страница после логина "по короткому пути"
4) страница после промежуточной страницы
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#17 raa

raa

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

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

Отправлено 20 февраля 2014 - 18:33

прикладываю скрины

Прикрепленные файлы


  • 0

#18 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 21 февраля 2014 - 05:49

прикладываю скрины

 

Ну, видимо, как-то так надо работать:

driver.findElement(By.name("login")).sendKeys("12345");
driver.findElement(By.name("password")).sendKeys("1111111");
driver.findElement(By.xpath("//*[@id='loginBtn']")).click();

// проверяем существование элемента, который должен быть после обычного логина и после промежуточной страницы.
if (driver.findElements(By.id("ext-gen26")).size() < 1) { 
   // проверка проходит через поиск списка. Причина: обычный findElement может вылететь в NoSuchElementException.
   // поиск через лист не вылетает никогда. Лист может быть пустым. Этим и воспользовались.
   // если элемент не существует, значит, мы находимся на промежуточной странице
   // вводим причину принудительного логина и настойчиво логинимся
   driver.findElement(By.name("pushOutMessage")).sendKeys("извините, это автотест!!!");
   driver.findElement(By.xpath("//*[@id='loginBtn']")).click();
}

// после промежуточной страницы возвращаемся на проторенную дорожку - на общую страницу.
// на ней можно кликать дальше.      
driver.findElement(By.id("ext-gen26")).click();

// далее идёт основной тест

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#19 vmaximv

vmaximv

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

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

Отправлено 21 февраля 2014 - 07:27

Порядок хэндлеров в коллекции соответствует списку PIDов процессов соответствующих окон, отсортированному по возрастанию.

Соответственно, основное окно всегда будет иметь первый хэндлер. Все дочерние - со второго и дальше.

 

Коварное и, в общем случае, не верное утверждение. Особенно если его применять к IEDriverServer.

http://www.w3.org/TR...#window-handles


  • 0

#20 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 21 февраля 2014 - 07:36

 

Порядок хэндлеров в коллекции соответствует списку PIDов процессов соответствующих окон, отсортированному по возрастанию.

Соответственно, основное окно всегда будет иметь первый хэндлер. Все дочерние - со второго и дальше.

 

Коварное и, в общем случае, не верное утверждение. Особенно если его применять к IEDriverServer.

http://www.w3.org/TR...#window-handles

 

 

Класс! Спасибо!

Такой тонкости не знал. Но мог бы догадаться, что приоритезация и ордеринг идёт не по PIDам, а по дереву PIDов.

Схоронил сайтик себе.


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



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

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

Яндекс.Метрика
Реклама на портале