2015-04-16 2 views
0

Я вхожу в мое приложение (браузер IE). На домашней странице есть потребительская ссылка. Я нажимаю на него. Он откроет другое окно. Введите идентификатор пользователя (обязательно поле) и сохраните. Он становится спасенным.org.openqa.selenium.NoSuchWindowException: невозможно получить браузер

Теперь, если бы я хотел просмотреть сохраненного потребителя. Мне нужно закрыть окно и перенести элемент управления на главную страницу. Я пытаюсь сделать driver.switchTo.defaultContent() после закрытия окна. Но это НЕ меняет контроль. ниже возвращается ошибка ..

Исключение:

Exception in thread "main" org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The server did not provide any stacktrace information) 

Код:

import java.io.File; 
import java.io.IOException; 
import java.util.Set; 
import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 
import org.openqa.selenium.support.ui.ExpectedCondition; 

public class FirstTest { 

    public static void main(String[] args) throws IOException, InterruptedException { 
     // TODO Auto-generated method stub 
     File file = new File("IEDriverServer.exe"); 
     System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
     WebDriver driver = new InternetExplorerDriver();   
     driver.get("http://xx.xxx.xxx.xx/mysuite/Login.aspx"); 
     driver.findElement(By.id("txtUser")).sendKeys("administrator"); 
     driver.findElement(By.id("txtPwd")).sendKeys("password"); 
     driver.findElement(By.id("cmdLogin")).click();  
     //Click Add customer (customer child window opens) 
     driver.findElement(By.linkText("Add Customer")).click(); 
     driver.switchTo().window("Customer"); 
     //Enter Customer ID and Save 
     driver.findElement(By.id("txtCode")).sendKeys("1234"); 
     driver.findElement(By.id("cmdPageSave")).click(); 
       //Close the child window 
     driver.findElement(By.id("cmdPageClose")).click(); 
     //swith back to parent window 
     driver.switchTo().defaultContent(); 
     Thread.sleep(3000); 
     driver.findElement(By.linkText("All customers")).click(); 




    } 

} 
+0

Вы делаете это на одной вкладке или на двух вкладках? – LittlePanda

+0

ваше окно обновляется, когда вы нажимаете ссылку потребителя. –

ответ

2

Попробуйте хранить имя обработчика перед переключением.

public static void main(String[] args) throws IOException, InterruptedException { 
     // TODO Auto-generated method stub 
     File file = new File("IEDriverServer.exe"); 
     System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
     WebDriver driver = new InternetExplorerDriver();   
     driver.get("http://xx.xxx.xxx.xx/mysuite/Login.aspx"); 
     driver.findElement(By.id("txtUser")).sendKeys("administrator"); 
     driver.findElement(By.id("txtPwd")).sendKeys("password"); 
     driver.findElement(By.id("cmdLogin")).click();  
     //Click Add customer (customer child window opens) 
     driver.findElement(By.linkText("Add Customer")).click(); 

     //Store before switch  
     String mainHandle= driver.getWindowHandle(); 

     driver.switchTo().window("Customer"); 

     //Enter Customer ID and Save 
     driver.findElement(By.id("txtCode")).sendKeys("1234"); 
     driver.findElement(By.id("cmdPageSave")).click(); 
       //Close the child window 
     driver.findElement(By.id("cmdPageClose")).click(); 
     //swith back to parent window 

     driver.switchTo().window(mainHandle); 

     Thread.sleep(3000); 
     driver.findElement(By.linkText("All customers")).click(); 

    } 
+0

Это я пробовал .. НЕТ такого исключения окна бросают – ChanGan

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