2015-02-09 16 views
6

Ich versuche einen Link zu öffnen, indem ich ihn mit capybara/poltergeist anklicke, was sich in einem neuen Tab öffnet.Öffnen eines neuen Tabs in Capybara/Poltergeist

Ich kann nicht scheinen, es funktioniert zu bekommen.

@session.find(<link>).click 

scheint nur auf der gleichen Seite zu bleiben, wie auch

click_link "<link>" 

@session.driver.window_handles 

Nur 1 Fenster zu geben, scheint mir, was ich tue.

Wie bekomme ich diesen Link in einem neuen Tab öffnen?

Scheint eine ziemlich große Verwirrung darüber zu sein, was funktioniert oder nicht a la (With Capybara, how do I switch to the new window for links with "_blank" targets?).

In der Hoffnung, jemand hat es ausgearbeitet ... Kann mich nicht um meinen Kopf kümmern.

Ok. Durch die Aktualisierung auf die neueste Version von Poltergeist (1.6.0) haben wir einige Fortschritte erzielt.

Jetzt aber habe ich zwei Fenster, aber keine Ahnung, wie man zwischen ihnen wechseln kann.

@session.windows 

gibt mir

[Fenster @ handle = "0", Fenster @ handle = "1"] (leicht modifiziert, wie es ein bisschen komisch würde).

Aber

@session.switch_to_window(1) 

Ergebnisse in

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

Antwort

6

Rechts, ab 5. Februar 2014 und v1.6 von Poltergeist, können Sie dies tun, als ...

@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) 

Hoffe, dass die Dinge für jemanden aufräumen ...

+1

Das ist richtig. 'switch_to_window' will ein Window-Objekt als Argument, keinen Index. Deshalb z. 'windows.last' funktioniert. Sie können auch '@ session.switch_to_window (@ session.windows [1])' 'ausführen. Sie sollten Ihre Antwort als richtig akzeptieren! – henrebotha

1

Ich tat dies mit

page.switch_to_window(page.windows[0]) 

Vielleicht ist das nützlich für jemanden.

Verwandte Themen