2015-02-09 26 views
6

Sto tentando di aprire un collegamento facendo clic su di esso utilizzando capybara/poltergeist che si apre in una nuova scheda.Apertura di una nuova scheda in Capybara/Poltergeist

Non riesco a farlo funzionare.

@session.find(<link>).click 

sembra solo per rimanere sulla stessa pagina, come fa

click_link "<link>" 

@session.driver.window_handles 

sembra solo di darmi 1 finestra tutto quello che sto facendo.

Come si apre il collegamento in una nuova scheda?

Sembra essere un bel po 'di confusione su ciò che funziona o no a la (With Capybara, how do I switch to the new window for links with "_blank" targets?).

Sperando che qualcuno l'abbia elaborato ... Sembra che non riesca a capirlo.

Ok. Aggiornando all'ultima versione di poltergeist (1.6.0) abbiamo qualche progresso.

Ora tuttavia ho due finestre ma non ho idea di come passare da una all'altra.

@session.windows 

mi dà

[Finestra @ maniglia = "0", Finestra @ maniglia = "1"] (leggermente modificato come stava andando un po 'strano).

Ma

@session.switch_to_window(1) 

risultati in

NoMethodError: undefined method `handle' for "1":String 

risposta

6

destra, come del 5 febbraio 2014 e v1.6 di poltergeist, si può fare questo, come ...

@session.click_on "link_with_target _blank" 

@session.switch_to_window(@session.windows.last) 
#Do whatever you're doing 
@session.current_window.close 
@session.switch_to_window(@session.windows.first) 

Spero che chiarisca le cose per qualcuno ...

+1

Questo è corretto. 'switch_to_window' vuole un oggetto Window come argomento, non un indice. Ecco perché, ad es. 'windows.last' funziona. Puoi anche fare '@ session.switch_to_window (@ session.windows [1])'. Dovresti accettare la tua risposta come corretta! – henrebotha

1

Ho fatto questo con

page.switch_to_window(page.windows[0]) 

Forse è utile a qualcuno.