2013-04-05 10 views
5

In Chrome, mit Wattir-Webdriver, klicke ich auf eine Schaltfläche, die ein untergeordnetes Browserfenster öffnet.Ein untergeordnetes Browserfenster, das sich selbst schließt, bricht den Link von Watir-webdriver zum übergeordneten Fenster.

ich tun:

@browser.window(title: 'Child').use 

ich mit verschiedenen Elemente in diesem Kind Fenster erfolgreich interagieren.

Sehr kurz, es gibt eine Aktion in diesem Fenster, die die Website als den "Punkt" des Öffnens des Fensters an erster Stelle betrachtet. z. B.

Wenn diese Aktion ausgeführt wird, wird das untergeordnete Fenster geschlossen.

Als ich watir-WebDriver sagen, mit dem übergeordneten Fenster zu gehen, jedoch bekomme ich einen Fehler:

@browser.window(title: 'Parent').use # => results in 
# Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed; 
# The window could not be found 

Der Grund, warum ich glaube, das ist ein Selen/Watir-WebDriver Fehler ist, da die folgende Code funktioniert:

Der einzige Unterschied ist die Aktion, die bewirkt, dass das untergeordnete Fenster sich selbst schließt.

Ich stelle fest, dass der watirspec-Code keinen Testfall für ein sich selbst schließendes Fenster hat, also ist dies vielleicht ein übersehener Aspekt des Windows-Codes in watir-webdriver.

Okay, hier ist der Code, den Sie ausführen können, um dieses Problem zu sehen selbst:

require 'watir-webdriver' 
@b = Watir::Browser.new :chrome 
@b.goto 'ckeditor.com/demo#full' 
@b.div(id: 'cke_editor1').link(title: 'Link').click 
@b.link(title: 'Browse Server').wait_until_present 
@b.link(title: 'Browse Server').click 
@b.window(title: 'CKFinder').use { 
    @b.frame(title: 'CKFinder').link(id: 'r0').right_click 
    @b.frame(title: 'CKFinder').frame(id: 'cke_22_frame').wait_until_present 
    @b.frame(title: 'CKFinder').frame(id: 'cke_22_frame').link(id: 'cke_200').click 
} 

, die in diesem Fehler führen:

Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed; 
The window could not be found 

ich nicht sagen, nie nuthin 'für dich! :-)

Nun, bevor Sie fragen "Warum testest du ein 3rd Party Bearbeitungswerkzeug, du verrückter Typ?" Ich werde das für dich beantworten: Ich nicht.

Was ich testen werde ist, dass der Quellcode, der vom CKEditor-Tool erzeugt wird, in einer bestimmten Situation korrekt aktualisiert wird (was weit über den Umfang dieser Frage hinausgeht). Um das einzurichten, muss ich zuerst wissen, was der Quellcode ist, so dass ich später überprüfen kann, wird es ordnungsgemäß von einem anderen Prozess aktualisiert. Und um das zu tun, muss ich es zuerst richtig einrichten, indem ich das Link-Tool des CKEditor benutze. Capiche?

+0

verwenden Sie 'Selen 'oder' watir' Webtreiber? –

+0

Watir-Webdriver - wie es in meinem ersten Satz heißt. :-) –

+0

Ich schaute auf wadirspec und abe ist in dieser Hinsicht richtig. Wir haben einen Test, um zu sehen, dass wir das Kind-Fenster sehen können, aber das ist es. Wir haben zum Beispiel keinen Test für den Beispielcode, der im Rdoc zur Verwendung angezeigt wird. –

Antwort

1

Wenn Sie zurück zum ersten Fenster erhalten müssen opened können Sie

@browser.windows[0] 

verwenden Sie können auch in der Lage sein, so etwas zu tun (nicht getestet)

@browser.windows.each do |window| 
    if window.title.include?(target_string) 
    window.use 
    end 
end 
+0

Das wäre großartig, wenn der Fehler nicht vor Ausführung dieser Codezeile auftritt (was passiert, leider). –

Verwandte Themen