2012-06-27 15 views
6

Ejecuto mi prueba de selenio rc en Eclipse con TestNG. Tengo un enlace que intenta abrir una nueva página del navegador. ¿Cómo puedo seleccionar esta nueva página para operar? Yo uso este código:selenio, ¿cómo puedo seleccionar una nueva ventana

selenium.selectWindow("name=NewPage");

sin embargo, dice que la página no encontrada. También trato de definir los identificadores de página o títulos con este código:

String[] wins = selenium.getAllWindowIds(); 
    for (String s : wins) 
     System.out.println("win: " + s); 

No define mi nueva ventana abierta:

win: MainPage 
win: 

Si el uso selenium.getAllWindowNames() me sale win: selenium_main_app_window win: selenium_blank65815.

momento de escribir este código selenium.selectWindow("name=blank99157"); pero sale el error - ERROR: Window does not exist. If this looks like a Selenium bug, make sure to read http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows for potential workarounds.

Respuesta

0

No podría estar usando la ventana de identificación correcta.

Echa un vistazo a este enlace. Puede encontrar su respuesta here.

Déjame saber que esto ayuda.

+0

no es útil para mí – khris

0

Pruebe selenium.getAllWindowNames(), selenium.getAllWindowTitles() .. uno de ellos funcionará con seguridad.

+0

obras, pero no se puede seleccionar la ventana con el nombre mostraron – khris

+0

Uso selenium.selectWindow (MainPage) para ir esa página y selenium.selectWindow (nulo) para volver a la antigua página. Si eso no funciona, intente esto también selenium.openWindow ("URL", "MyWindow"); selenium.selectWindow ("MyWindow"); –

7

La ventana, obviamente, no tiene nombre, por lo que no puede seleccionarla por su nombre.

  1. Si se abre la ventana a través de JavaScript y se puede cambiar la secuencia de comandos, intente cambiar a window.open("someUrl");window.open("someUrl", "someName");, podrás entonces capaz de seleccionar la ventana con el nombre conjunto. Más información en el MDN doc for window.open().

  2. Selenium RC no admite <a href="someUrl" target="_blank"> enlaces (que abren el enlace en una nueva ventana). Por lo tanto, si la ventana se abre mediante un enlace de este tipo, hay que encontrar este elemento <a>, obtener el atributo href y llamar

    selenium.openWindow(theFoundUrl, "theNewWindow"); 
    selenium.selectWindow("id=theNewWindow"); 
    
  3. Si se abre a través de JavaScript antes o durante el evento onload, se Tendrá que llamar

    selenium.openWindow("", "theNewWindow"); 
    selenium.selectWindow("id=theNewWindow"); 
    

    Más información al respecto en el fallo SEL-339 o en las openWindow() y selectWindow() JavaDocs.

  4. Si usted tiene sólo dos ventanas/querer abrir el más nuevo, puede intentar

    selenium.selectPopup()

    Eso es, obviamente, la forma más fácil, porque selecciona la primera ventana no superior. Por lo tanto, solo es útil cuando desea seleccionar la ventana emergente más nueva.

  5. Si la nueva ventana tiene un único título , puede hacerlo

    selenium.selectPopup("Title of the window"); 
    

    o selenium.selectWindow("title=Title of the window");

  6. lo contrario, debe iterar sobre selenium.getAllWindowNames() para obtener el nombre correcto (selenio crea nombres de ventanas sin una) Sin embargo, no se puede codificar ese nombre en el archivo de prueba, ya que cambiará cada vez, por lo que tendrá que desarrollar una lógica dinámica para esto.

  7. No le gustará esto: vaya a WebDriver. Debería ser ahora más resistente a tales problemas.

+0

intenté la variante 6. Escribí tal código: String wins [] = selenium.getAllWindowNames(); \t for (String s: wins) \t System.out.println ("win:" + s); \t \t \t \t selenium.selectWindow ("name = wins [2]"); – khris

+0

Pero recibe el error: ERROR: La ventana no existe. Si esto se ve como un error de Selenium, asegúrese de leer http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple- windows para posibles soluciones provisionales. – khris

+0

@khris Sí, el enlace en la Excepción se encuentra, no hay soluciones alternativas mencionadas en los documentos. Sin embargo, puede probar la solución alternativa mencionada en mi respuesta en las secciones 2 y 3, ese es posiblemente el error que está viendo. –

1
WebDriver driver = new FirefoxDriver(); 
WebElement inputhandler = driver.findelement(By.linktext("whatever here")); 
inputhandler.click(); 
String parentHandle = driver.getWindowHandle(); 
Set<String> PopHandle = driver.getWindowHandles(); 
Iterator<String> it = PopHandle.iterator(); 
String ChildHandle = ""; 
while(it.hasNext()) 
{ 
    if (it.next() != parentHandle) 
    { 
     ChildHandle = it.next().toString(); 
     // because the new window will be the last one opened 
    } 
} 
driver.switchTo().window(ChildHandle); 
WebDriverWait wait1 = new WebDriverWait(driver,30); 
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.id("something on page"))); 

// do whatever you want to do in the page here 

driver.close(); 
driver.switchTo().window(parentHandle); 
Cuestiones relacionadas