2010-10-04 12 views
12

Sto provando a usare il selenio ide per duplicare un'azione. L'azione fa clic su un collegamento che apre una nuova finestra. Come fai a focalizzare il selenio ide sulla nuova finestra anziché sull'altro? Non ha funzionato per me.Come ti concentri sulle nuove finestre con il selenio ide?

+0

controllare questo collegamento, ho anche postato in seguito, ho la sensazione selectWindow è molto rotto: http://jira.openqa.org/browse/SEL-703 – the0ther

risposta

8

Selezionare Finestra

Per questo è necessario utilizzare il comando selectWindow | windowName.

Per tornare alla finestra principale dall'altra finestra poi fare selectWindow | null

Arguments: 

    * windowID - the JavaScript window ID of the window to select 

Selects a popup window using a window locator; once a popup window 

è stata selezionata, tutti i comandi vanno a quella finestra. Per selezionare nuovamente la finestra principale , utilizzare null come destinazione.

Window locators provide different ways of specifying the window object: 

per titolo, per interno JavaScript "nome", oppure variabile JavaScript.

* title=My Special Window: Finds the window using the text that 

appare nella barra del titolo. Stai attento; due finestre possono condividere lo stesso titolo. Se ciò accade, questo localizzatore sarà selezionarne uno. * name = myWindow: trova la finestra utilizzando la proprietà "nome" JavaScript JavaScript. Questo è il secondo parametro "windowName" passato al metodo JavaScript window.open (url, windowName, windowFeatures, replaceFlag) (che Selenium intercetta). * var = variableName: alcune finestre popup sono senza nome (anonime), ma sono associate a un nome di variabile JavaScript nella finestra dell'applicazione corrente , ad es. "window.foo = window.open (url);". In questi casi, è possibile aprire la finestra utilizzando "var = pippo".

If no window locator prefix is provided, we'll try to guess what you 

significa in questo modo:

1.) if windowID is null, (or the string "null") then it is assumed the 

utente si riferisce al finestra originale istanziato dal browser).

2.) if the value of the "windowID" parameter is a JavaScript variable 

nome nella finestra corrente dell'applicazione , allora si presume che questa variabile contiene il valore restituito da una chiamata al JavaScript window.open (metodo).

3.) Otherwise, selenium looks in a hash it maintains that maps string 

nomi alla finestra "nomi".

4.) If that fails, we'll try looping over all of the known windows 

per cercare di trovare il giusto "titolo". Poiché "title" non è necessariamente univoco, questo potrebbe avere il comportamento inaspettato .

If you're having trouble figuring out the name of a window that you want 

per manipolare, guardare i messaggi di log selenio che identificano i nomi di finestre create tramite window.open (e quindi intercettato da Selenio). Vedrete messaggi come quanto segue per ogni finestra come è aperto:

debug: window.open call intercepted; window ID (which you can 

uso con selectWindow()) è "myNewWindow"

In some cases, Selenium will be unable to intercept a call to 

window.open (se si verifica la chiamata durante o prima dell'evento "onLoad", per esempio ). (Si tratta di bug SEL-339). In questi casi, è possibile forzare selenio per preavviso il nome della finestra aperta utilizzando il comando selenio openWindow, utilizzando un URL (vuoto) vuoto, in questo modo: openWindow ("" , "myFunnyWindow").

selectWindow (WindowID)

selectPopup

Se si tratta di un popup poi fare selectPopUp | windowId e poi per tornare alla finestra principale fare selectWindow | null

selectPopUp(windowID) Argomenti:

  • windowID - un identificatore per la finestra pop-up, che può assumere diversi significati

Semplifica il processo di selezione di una finestra popup (e non offre funzionalità oltre a quelle che selectWindow() fornisce già).

  • Se windowID non è specificato o specificato come "null", viene selezionata la prima finestra non superiore. La finestra superiore è quella che verrebbe selezionata da selectWindow() senza fornire un windowID. Questo non dovrebbe essere usato quando più di una finestra popup è in gioco.
  • In caso contrario, la finestra sarà guardato per considerare WindowID come il seguente ordine:
    1. Il "nome" della finestra, come specificato a window.open()
    2. variabile
    3. Un JavaScript, che è un punto di riferimento a una finestra
    4. Il titolo della finestra. Questa è la stessa ricerca ordinata eseguita da selectWindow
+0

fa il bug segnalare qui: http: // jira .openqa.org/browse/SEL-703 si applicano a ciò che hai delineato sopra? Ho lottato con selectWindow per ore ora. mi sta facendo impazzire. – the0ther

+2

fantastico !!! semplicemente usare 'selectPopup' ha risolto il mio problema. molte grazie! –

+0

Inoltre, non dimenticare di inserire un'waitForPopUp 'prima di iselectPopup' per assicurarsi che il pop-up abbia terminato il caricamento prima di provare a selezionarlo. –

2

È possibile memorizzare l'ID della finestra casuale (generato da Selenio IDE) usando ‘storeAttribute’ comando. Hai solo bisogno di memorizzare l'ID in una variabile e quindi puoi selezionare la finestra usando il comando 'selectWindow'.

Provate ad usare questo:

<tr> 
    <td>storeAttribute</td> 
    <td>link=Help [email protected]</td> 
    <td>window_ID</td> 
</tr> 

<tr> 
    <td>selectWindow</td> 
    <td>${window_ID}</td> 
    <td></td> 
</tr> 
3

Prova questo utilizzando Selenio Web Driver 2:

driver.switch_to.window(driver.window_handles.last); 
+0

L'OP chiede chiaramente una soluzione in Selenium IDE –

2

Considerate questo: si preferisce rimuovere solo l'attributo target="_blank"? Per me questa è stata una soluzione:

getEval 
this.page().findElement('link=Facebook').removeAttribute('target'); 

Rimanendo all'interno della stessa finestra ha alcuni vantaggi di selenio IDE, vedendo non supporta vuoto bersaglio.

+0

sembra che l'ho downvoted per sbaglio - la soluzione risulta piuttosto elegante in un desiderio di moda che potrei migliorare a upvote – Alvin

+0

Questa è in realtà la soluzione più veloce e più semplice per la maggior parte dei casi d'uso . Funziona anche su forme! –

Problemi correlati