2009-04-08 91 views
20

Estoy usando Selenium y Firefox.¿Cómo cambio el foco a una nueva pestaña emergente en Selenium?

Tengo un enlace en una página (digamos linkA) que abre una nueva página en una nueva pestaña. La nueva pestaña se muestra cuando se hace clic en linkA. Entonces quiero interactuar con la nueva página.

Aquí es mi guión selenio:

  • clic linkA
  • pausa 5000
  • SelectWindow Título
  • clic linkB (nota: linkB es en la nueva página)

Selenio no puede identificar la nueva pestaña Informa:

[advertir] El enlace tiene el objetivo '_blank', que no es compatible con Selenium. Objetivo aleatorizado para ser: selenium_blank24003

¿Hay alguna manera de decirle a Selenium que interactúe con la pestaña que se muestra?

+0

¿Ha resuelto esto? –

Respuesta

4

¿Intentó agregar un WindowFocus entre selectWindow y haga clic en linkB?

Editar: selectWindow toma un Javascript windowID. ¿Su enlace A especifica un ID de ventana para el acceso de Selenium?

Aquí está la primera página de prueba (t1.html), en la llamada window.open el 2do parámetro es 'WindowTest', este es el ID de ventana de JavaScript que busca el selenio.

<a href="javascript:void(0);" name="t1" 
    onclick="window.open('t2.html', 'WindowTest', 'width=450,height=600');"> 
test 
</a> 

Aquí está la segunda página de prueba (t2.html):

<a href="t1.html" name="t2">2test2</a> 

de ejecutar el script termina con la ventana emergente en t1.html Mi script

click    link=test 
pause    5000 
selectWindow  WindowTest 
windowFocus 
click    link=2test2 
+0

Él no está hablando de una ventana emergente a través de window.open. –

0

Aquí son los pasos que tomé para Selenium IDE:

  1. encontrar el enlace en cuestión
  2. quitar el atributo “objetivo” de la relación
  3. copiar el destino href en una variable (myURL)
  4. modificar el enlace href-> javascript: window.open (myURL, 'myWindow ')
  5. clic en el enlace
  6. ventana de selección de 'myWindow'

getEval | this.page(). findElement ('link = click here'). removeAttribute ('target') ||

storeEval | this.page(). findElement ('link = click here'). href | myUrl

getEval | this.page(). findElement ('link = click here'). href = "javascript: ventana.open ('$ {myUrl}', 'myWindow') "||

click | enlace = haga clic aquí ||

pausa | 1000 ||

selectWindow | name = myWindow ||

0

lericain59 me envió en la dirección correcta, aunque tuve que hacer algunos cambios para que funcione con mi versión de IDE de selenio (estoy ejecutando 1.0.6). Además, para mis propósitos, no necesité verificar tanto que se abrió en una ventana separada, solo que estaba abriendo la ventana correcta.

Aquí está el script que funcionó para mí.

  • storeEval | this.browserbot.findElement ('link = click here'). href | myUrl |
  • abierto | $ {myUrl} ||

this.page() no funcionó. Parece haber sido reemplazado con this.browserbot. Además, acabo de abrir la página directamente: evita una pausa manual y tiene menos pasos.

2

Me funcionó.

[info] Executing: |storeEval | this.browserbot.findElement('link=Pastanet').href | Link_PastaNet | 
[info] Executing: |openWindow | ${Link_PastaNet} | MyWindows | 
4

hi probar este ..

Set<String> winSet = driver.getWindowHandles(); 
     List<String> winList = new ArrayList<String>(winSet); 
     String newTab = winList.get(winList.size() - 1); 
     System.out.println("winList: "+winList.size()); 
     //driver.close(); // close the original tab 
     driver.switchTo().window(newTab); 
0
Iterator<String> windowIterator = driver.getWindowHandles().iterator();while (windowIterator.hasNext()) { 
String windowHandle = windowIterator.next(); 
driverwindow = driver.switchTo().window(windowHandle); 
if (_driverwindow.getTitle().equals("Title of the window to switch")) { 
} 
} 
0

Simplemente utiliza este código.

public void newtab(){ 

    System.setProperty("webdriver.chrome.driver", "E:\\eclipse\\chromeDriver.exe"); 

    WebDriver driver = new ChromeDriver(); 

    driver.get("http://www.w3schools.com/tags/att_a_target.asp"); 

    //I have provided a sample link. Make sure that you have provided the correct link in the above line. 

    driver.findElement(By.className("tryitbtn")).click(); 

    new Actions(driver).sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL).sendKeys(driver.findElement(By.tagName("html")), Keys.NUMPAD2).build().perform(); 


    // In keyboard we will press 

    //ctrl+1 for 1st tab 

    //ctrl+2 for 2nd tab 

    //ctrl+3 for 3rd tab. 

    //Same action is written in the above code. 

} 
Cuestiones relacionadas