W przeglądarce Chrome, używając watir-webdriver, klikam przycisk otwierający okno przeglądarki podrzędnej.Zamknięcie okna przeglądarki podrzędnej najwyraźniej powoduje przerwanie łącza Watir-webdriver do okna nadrzędnego?
zrobić:
@browser.window(title: 'Child').use
pomyślnie interakcji z różnych elementów w tym oknie dziecięcej.
Bardzo krótko, w tym oknie wykonywane jest działanie, które strona uważa za "punkt" otwierania okna w pierwszej kolejności. np.
@browser.button(title: 'Button').click
Po wykonaniu tej czynności okno potomne zamyka się.
Kiedy mówię Watir-webdriver wrócić do korzystania z okna nadrzędnego, jednak pojawia się błąd:
@browser.window(title: 'Parent').use # => results in
# Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed;
# The window could not be found
Powodem Wierzę, że to jest błąd Selen/Watir-webdriver dlatego, że następujące kod działa:
@browser.window(title: 'Child').use
# ... Now I do various things in the child window that do NOT
# ... cause it to close itself. They all work as expected.
# ...
puts @browser.window(title: 'Parent').present? #=>true
@browser.window(title: 'Child').close
puts @browser.window(title: 'Parent').present? #=>true
@browser.window(title: 'Parent').use # => No error thrown
Jedyna różnica polega na działaniu, które powoduje zamknięcie okna potomnego.
Zauważam, że kod watirspec nie ma przypadku testowego dla samozamykającego się okna, więc być może jest to przeoczony aspekt kodu Windows w watir-webdriver.
Ok, więc tutaj jest kod, który ty można uruchomić, aby zobaczyć ten problem sam:
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
}
To spowoduje ten błąd:
Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed;
The window could not be found
nie mów, że nigdy nie robiłeś tego dla ciebie! :-)
Zanim zaczniesz pytać: "Dlaczego testujesz narzędzie do edycji strony trzeciej, szalony koleś?" Odpowiem na ciebie: nie jestem.
Testuję, że kod źródłowy generowany przez narzędzie CKEditor jest poprawnie aktualizowany w określonej sytuacji (co wykracza daleko poza zakres tego pytania tutaj). Aby to ustawić, najpierw muszę wiedzieć, jaki jest ten kod źródłowy: :, aby później móc zweryfikować, czy jest poprawnie aktualizowany przez inny proces. Aby to zrobić, muszę najpierw poprawnie go skonfigurować, korzystając z narzędzia do linkowania CKEditor. Capiche?
używasz 'selen 'lub' watir' webdriver? –
Watir-webdriver - jak to mówi w moim pierwszym zdaniu. :-) –
Spojrzałem na watirspec i abe ma rację pod tym względem. mamy tam test, aby zobaczyć, że możemy zobaczyć okno potomne, ale to jest to. Nie mamy na przykład testu dla przykładowego kodu show w programie rdoc do użytku. –