2015-03-12 5 views
0

Я открыл веб-сайт и применил Вход, затем всплывающее окно открывается, я хочу щелкнуть по всплывающему окну, но я не могу включить всплывающее окно.Java: фокус не во всплывающем окне во время обработки окна

driver.get("https://hdfcbank.com/"); 
    driver.findElement(By.id("loginsubmit")).click(); 

    String loginWindow = driver.getWindowHandle(); 
    driver.switchTo().window(loginWindow); 

    driver.findElement(By.xpath("//*[@id='wrapper']/div[6]/a/img")).click(); 

Я не могу щелкнуть по элементу всплывающего окна в строке 5. Вы можете проверить код.

+0

Что такое ошибка? – Saifur

ответ

0

Проверьте принятый ответ на аналогичный вопрос

How to handle Pop-up in Selenium WebDriver using Java

Вам нужно - getWindowHandles - & затем итерацию над ними.


Вот рабочий раствор в случае, если вы до сих пор не понял его (это для примера HDFC) ...

String test_URL = "http://www.hdfcbank.com/"; 
    String css_login = "img#loginsubmit"; 
    String css_popup_continue = "img[alt='Continue']"; 

    browser = new FirefoxDriver(); 
    browser.navigate().to(test_URL); 

    List<WebElement> objLogin = browser.findElements(By.cssSelector(css_login)); 
    if (objLogin.size() > 0) { 

     objLogin.get(0).click(); 

     String parentWindowHandle = browser.getWindowHandle(); // save the current window handle. 
     WebDriver popup = null; 
     Iterator<String> windowIterator = browser.getWindowHandles().iterator(); 
     while(windowIterator.hasNext()) { 
      String windowHandle = windowIterator.next(); 
      popup = browser.switchTo().window(windowHandle); 
      if (popup.getTitle().contains("NetBanking")) { 
       List<WebElement> objPopupElement = popup.findElements(By.cssSelector(css_popup_continue)); 
       if(objPopupElement.size() > 0){ 
        System.out.println("Switched to Popup and found element..."); 
        objPopupElement.get(0).click(); 

        //Do any other operations... 
        break; 
       } 
      } 
     } 
     //always safe to switch back to parent window to avoid any null pointers, unless parent process got closed... 
     browser.switchTo().window(parentWindowHandle); 
    } 
    else { 
     System.out.println("Logon button not found..."); 
    } 
+0

Здесь открывается только одно всплывающее окно, поэтому я не думаю, что мы должны использовать getWindowHandles – user2384525

+0

Nopes ..... Есть разница между getWindowHandle() и getWindowHandles(). Прочитайте это сообщение, чтобы получить разницу. Http://stackoverflow.com/questions/25871042/selenium-webdriver-getwindowhandle-method Что касается вашего примера, используйте getWindowHandles() ... Дайте ему шанс увидеть и увидеть разницу в поведении , – Dharam

+0

Согласовано, но в приведенном выше коде - открывается только одно окно, поэтому я могу использовать getWindowHandle(), и это должно быть работа. Откройте hdfcbank.com и нажмите кнопку входа в систему – user2384525

Смежные вопросы