2016-04-27 19 views
2

Ich benutze ruby ​​und watir-webdriver für die Automatisierung einer Webanwendung, wo ich auf das Szenario stieß, in dem ein neuer Browser geöffnet wird, wenn ich auf eine Schaltfläche klicke und eine füllen muss Form auf dem neu geöffneten Fenster. Webdriver kann es nicht als ein Fenster identifizieren.Mit webdriver den Fokus auf einen neu geöffneten Browser setzen

Gibt es sowieso für die Behandlung dieses Szenarios? Wie ich weiß, können wir keine Verbindung zu einer Browser-Instanz herstellen, die nicht von webdriver gestartet wurde.

verwendete ich den folgenden Code zu überprüfen, ob das Fenster

@browser.window(:title => /#{title}/i).wait_until_present 

ich auch versucht, unter Code existiert alle geöffneten Fenster zu überprüfen, aber die neue Browser-Instanz kommen würde nicht in der Liste

@browser.windows.each { |w| p w.title} 
+0

Haben Sie versucht, etwas in der Art von: 'driver.SwitchTo(). Window (driver.WindowHandles.Last());'? Dies ist möglicherweise nicht die richtige Syntax für 'Ruby', aber es sollte relativ nah sein. – Brian

+0

Sind Sie sicher, dass es sich tatsächlich um ein Browserfenster handelt? Ist es möglich, dass nur ein Element auf der Seite wie ein Popup aussieht? Zum Beispiel sieht der [jQueryUI-Dialog] (https://jqueryui.com/dialog/) wie ein Fenster aus, ist aber nur ein Element im ursprünglichen Browserfenster (dh kein neues Fenster). –

+0

@brian -> Ich habe ähnliche Sache in Ruby getan, aber wie gesagt, das Problem ist, es ist kein Kind-Fenster, es ist eine neue Browser-Sitzung. – yudi2312

Antwort

0

Ich glaube Watir::Window#use wurde für diesen genauen Anwendungsfall entwickelt. Es wechselt zu einem anderen Fenster, führt eine Aktion aus (wird als Codeblock übergeben) und wechselt dann zurück zum ursprünglichen Fenster. Zum Beispiel:

@browser.window(title: /#{title}/i).use do 
    # Whatever you need to do on the new window, like: 
    @browser.text_field(id: "some-id").set "Foo" 
    @browser.button(id: "submit").click 
end 
+0

wie ich schon sagte .. es ist kein untergeordnetes Fenster ... es ist eine neue Browsersitzung – yudi2312

Verwandte Themen