2009-04-08 7 views
20

Uso Selenio e Firefox.Come posso cambiare lo stato attivo in una nuova scheda popup in Selenium?

Ho un collegamento su una pagina (ad esempio linkA) che apre una nuova pagina in una nuova scheda. La nuova scheda viene visualizzata quando viene fatto clic sul linkA. Quindi voglio interagire con la nuova pagina.

Ecco il mio script selenio:

  • click Linka
  • pausa 5000
  • selectWindow Titolo
  • clic LinkB (nota: LinkB è sulla nuova pagina)

Selenio impossibile identificare la nuova scheda. Riporta:

[warn] Il link ha il target "_blank", che non è supportato nel selenio! Destinazione casuale da selezionare: selenium_blank24003

C'è un modo per dire al Selenium di interagire con la scheda visualizzata?

+0

Hai risolto questo problema? –

risposta

4

Hai provato ad aggiungere una finestraFocus tra selezionare Finestra e fare clic sul collegamentoB?

Modifica: selectWindow richiede un windowID Javascript. Il tuo linkA specifica un windowID per il quale Selenium può accedere?

Ecco la prima pagina di prova completa (t1.html), nel window.open chiama il secondo parametro è 'WindowTest', questo è il windowID javascript che il selenio cerca.

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

Ecco la seconda pagina di prova (t2.html):

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

esecuzione dello script finisce con la finestra pop-up sul t1.html Il mio script

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

Non sta parlando di un popup tramite window.open. –

0

Qui sono i passaggi che ho preso per Selenium IDE:

  1. trovare il link in questione
  2. rimuovere l'attributo “target” dal collegamento
  3. copiare la destinazione href in una variabile (myUrl)
  4. modificare il link href-> javascript: window.open (myUrl, 'mywindow ')
  5. click sul collegamento
  6. finestra di selezione 'MyWindow'

getEval | this.page(). findElement ('link = clicca qui'). removeAttribute ('target') ||

storeEval | this.page(). findElement ('link = clicca qui'). href | myUrl

getEval | this.page(). findElement ('link = clicca qui'). href = "javascript: window.open ('$ {myUrl}', 'myWindow') "||

clic | link = clicca qui ||

pausa | 1000 ||

selezionare Finestra | name = myWindow ||

0

lericain59 mi ha inviato nella giusta direzione, anche se ho dovuto apportare alcune modifiche perché funzionasse con la mia versione di IDE del selenio (sto eseguendo 1.0.6). Inoltre, per i miei scopi, non avevo bisogno di verificare così tanto che si apriva in una finestra separata, solo che stava aprendo la finestra corretta.

Ecco la sceneggiatura che ha funzionato per me.

  • storeEval | this.browserbot.findElement ('link = clicca qui'). href | myUrl |
  • aperto | $ {myUrl} ||

this.page() non ha funzionato. Sembra essere stato sostituito con this.browserbot. Inoltre, ho appena aperto la pagina - evita una pausa manuale e ha meno passaggi.

2

Ha funzionato per me.

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

hi provare questo ..

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

semplicemente utilizzare questo codice.

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. 

}