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

Driver

Регистрация: 26 янв 2015
Offline Активность: 10 фев 2015 16:45
-----

Мои сообщения

В теме: Как в Selenium работать с окном выбора?

10 февраля 2015 - 13:55

Проблема решена, помог Petrov.Sergey. Спасибо!

 

Вот решение в примере:

 

@Test
    public void testSample() throws Exception {
        
        
            driver.get(baseUrl);
            
            driver.findElement(By.id("loginContainer_username")).clear();
            driver.findElement(By.id("loginContainer_username")).sendKeys("da");
            driver.findElement(By.id("loginContainer_password")).clear();
            driver.findElement(By.id("loginContainer_password")).sendKeys("da");
            driver.findElement(By.name("loginContainer$ctl05")).click();
            driver.findElement(By.id("tdImbButtonmenu_2")).click();
           
          
            
            driver.findElement(By.id("manageFilter_ctl00_filterItem_buttonEnter_popupButton")).click();
            Set<String> windows = driver.getWindowHandles();
            Iterator<String> it = windows.iterator();
            String mainWindow = (String) it.next();
            String popUp = (String) it.next();
            driver.switchTo().window(popUp);
            driver.findElement(By.id("itemDataGrid_ctl03_ctl05")).click();
            driver.close();
            driver.switchTo().window(mainWindow);
            
    }    
 


В теме: Как в Selenium работать с окном выбора?

10 февраля 2015 - 12:44

 

 

На какой строчке ругается?

Всю информацию давайте, пожалуйста.

Ругается вроде на  String popUp = (String) it.next();

 

Значит, попап у Вас - это не отдельное окно!

Разберитесь сначала, с чем Вы работаете.

 

Выглядит именно как новое окно.


В теме: Как в Selenium работать с окном выбора?

10 февраля 2015 - 11:55

На какой строчке ругается?

Всю информацию давайте, пожалуйста.

Ругается вроде на  String popUp = (String) it.next();

 

Вот весь трейс:

java.util.NoSuchElementException
    at java.util.LinkedHashMap$LinkedHashIterator.nextNode(Unknown Source)
    at java.util.LinkedHashMap$LinkedKeyIterator.next(Unknown Source)
    at com.example.tests.Test1.testSample(Test1.java:54)
    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:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    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:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)


В теме: Как в Selenium работать с окном выбора?

10 февраля 2015 - 09:20

 

Ну, например, так:

Set<String> windows = driver.getWindowHandles();
Iterator<String> it = windows.iterator();
String mainWindow = (String) it.next();
String popUp = (String) it.next();
driver.switchTo().window(popUp);
driver.close();
driver.switchTo().window(mainWindow);
Petrov.Sergey, спасибо что помогаете. Сделал так как в примере ниже, но почему то ошибка "java.util.NoSuchElementException"

 

public class Test1 {
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();
    
   

    @Before
    public void setUp() throws Exception {
        driver =new InternetExplorerDriver();
        baseUrl = "http://localhost/Test1";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test
    public void testSample() throws Exception {
        
        
            driver.get(baseUrl);
            
            driver.findElement(By.id("loginContainer_username")).clear();
            driver.findElement(By.id("loginContainer_username")).sendKeys("da");
            driver.findElement(By.id("loginContainer_password")).clear();
            driver.findElement(By.id("loginContainer_password")).sendKeys("da");
            driver.findElement(By.name("loginContainer$ctl05")).click();
            driver.findElement(By.id("tdImbButtonmenu_2")).click();
           
            Set<String> windows = driver.getWindowHandles();
            
            driver.findElement(By.id("manageFilter_ctl00_filterItem_buttonEnter_popupButton")).click();
            
            Iterator<String> it = windows.iterator();
            String mainWindow = (String) it.next();
            String popUp = (String) it.next();
            driver.switchTo().window(popUp);
           
            driver.findElement(By.id("itemDataGrid_ctl03_ctl05")).click();
            
                 driver.close();
                 driver.switchTo().window(mainWindow);
            
    }    

    @After
    public void tearDown() throws Exception {
      driver.quit();
      String verificationErrorString = verificationErrors.toString();
      if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
      }
    }
}
 


В теме: Как в Selenium работать с окном выбора?

09 февраля 2015 - 16:03

Если Вы уверены, что это новое окно, то используя getWindowHandles() и switchTo(), Вы можете переключаться между основным окном и новым и обратно.

Удачи!

Petrov.Sergey, извините за наглость, а можете на моем примере показать как использовать данные методы. А то что то не получается(