2016-11-13 4 views
0

Мой Сценарий:Печать название третьего окна в селеном WebDriver с помощью Java

У меня есть базовый URL-адрес:.. WWW **** ком

После открытия URL, я, нажав на ссылку под названием, «Test», он откроет другое окно, скажем «B». В окне BI нажмите кнопку «button1», откроется другое окно «C». Я должен получить название окна C.

Ниже мой пример кода:

driver.get("http://www.****.com/"); 
    WebElement menu_ele  =driver.findElement(By.tagName("a").linkText("PRACTICE")); 
    Actions act = new Actions(driver); 
    act.moveToElement(menu_ele).build().perform(); 
    Thread.sleep(1000); 
    driver.findElement(By.tagName("a").linkText("Demo Sites")).click(); 
    driver.findElement(By.tagName("a").linkText("http://www.****.com/Practiceform/")).click(); 
    Set<String> window = driver.getWindowHandles(); 
    String window1 = (String) window.toArray()[0]; 
    String window2 = (String) window.toArray()[1]; 
    // String window3 = (String) window.toArray()[2]; 
    driver.switchTo().window(window2); 
    driver.findElement(By.id("button1")).click(); 
    Set<String> win = driver.getWindowHandles(); 
    String window3 = (String) window.toArray()[0]; 
    driver.switchTo().window(window3); 
    System.out.println(driver.getTitle()); 
    driver.manage().window().maximize(); 

Я не могу переключиться на окно C. Я знаю, что это не лучшая практика, предложить несколько способов достижения Это.

ответ

0

В своем коде, я вижу, вы пытаетесь переключиться на Window3 но вы назначаете его к первому окну с помощью String window3 = (String) window.toArray()[0];

Использование

String window3 = (String) window.toArray()[2]; 

вместо этого.

отредактированный код

Set<String> window = driver.getWindowHandles(); 
    String window1 = (String) window.toArray()[0]; 
    String window2 = (String) window.toArray()[1]; 
    // String window3 = (String) window.toArray()[2]; 
    driver.switchTo().window(window2); 
    driver.findElement(By.id("button1")).click(); 
    Set<String> win = driver.getWindowHandles(); 
    String window3 = (String) window.toArray()[2]; //get the third window from the set 
    driver.switchTo().window(window3); 
    System.out.println(driver.getTitle()); 
    driver.manage().window().maximize(); 
+0

Является ли это правильный способ справиться с несколькими окнами? –