Jaka jest różnica między nimi
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Którego użyć i kiedy?
Jaka jest różnica między nimi
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Którego użyć i kiedy?
Odpowiedzi:
To dobre pytanie. Widziałem, jak ludzie używają Close (), kiedy nie powinni. Szukałem w kodzie źródłowym Selenium Client & WebDriver C # Bindings i znalazłem następujące.
webDriver.Close()
- Zamknij okno przeglądarki, na którym skupia się sterownik webDriver.Quit()
- Wywołania Dispose () webDriver.Dispose()
Zamyka wszystkie okna przeglądarki i bezpiecznie kończy sesjęPoniższy kod usuwa obiekt sterownika, kończy sesję i zamyka wszystkie przeglądarki otwarte podczas testu, czy test się nie powiedzie, czy przejdzie.
public IWebDriver Driver;
[SetUp]
public void SetupTest()
{
Driver = WebDriverFactory.GetDriver();
}
[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}
Podsumowując, upewnij się, że Quit () lub Dispose () jest wywoływana przed wyjściem z programu i nie używaj metody Close (), chyba że jesteś pewien, co robisz.
Uwaga
Znalazłem to pytanie, gdy próbowałem znaleźć powiązany problem, dlaczego moje maszyny wirtualne zabrakło miejsca na dysku twardym. Okazało się, że wyjątek powodował, że Quit () lub Dispose () nie były wywoływane przy każdym uruchomieniu, co spowodowało, że folder appData zapełnił dysk twardy. Używaliśmy więc poprawnie metody Quit (), ale kod był nieosiągalny. Podsumowanie upewnij się, że wszystkie ścieżki kodu wyczyszczą niezarządzane obiekty za pomocą bezpiecznych wzorców wyjątków lub zaimplementuj IDisposable
Również
w przypadku RemoteDriver wywołanie Quit () lub Dispose () spowoduje zamknięcie sesji na serwerze Selenium. Jeśli sesja nie zostanie zamknięta, pliki dziennika dla tej sesji pozostaną w pamięci.
Quit()
jest przekierowanie doDispose()
Close()
- Służy do zamykania przeglądarki lub aktualnie aktywnej strony.
Quit()
- Służy do zamykania instancji sterownika sieci lub niszczenia instancji sterownika sieci (Zamknij wszystkie okna).
Dispose()
- Nie znam tej metody.
Quit
i Dispose
powinny być dla siebie synonimami. Innymi słowy, Quit
połączenia Dispose
.
driver.close
i driver.quit
są dwiema różnymi metodami zamykania sesji przeglądarki w Selenium WebDriver. Zrozumienie obu z nich i wiedza, kiedy użyć każdej metody, jest ważne w wykonywaniu testu. Dlatego starałem się rzucić nieco światła na obie te metody.
driver.close
- Ta metoda zamyka okno przeglądarki, na którym ustawiony jest fokus. Pomimo znanej nazwy dla tej metody WebDriver
jest nie zaimplementować AutoCloseable
interfejs .
driver.quit
- Ta metoda w zasadzie wywołuje driver.dispose
teraz wewnętrzną metodę, która z kolei zamyka wszystkie okna przeglądarki i kończy sesję WebDriver z wdziękiem.
driver.dispose
- Jak wspomniano wcześniej, jest to wewnętrzna metoda WebDriver, która została po cichu odrzucona zgodnie z inną odpowiedzią - Konieczna weryfikacja. Ta metoda naprawdę nie ma przypadku użycia w normalnym toku pracy testowej, ponieważ jedna z poprzednich metod powinna działać w większości przypadków użycia.
Objaśnienie przypadku użycia: Powinieneś używać, driver.quit
gdy chcesz zakończyć program. Zamknie wszystkie otwarte okna przeglądarki i zakończy sesję WebDriver. Jeśli nie będziesz używać driver.quit
na końcu programu, sesja WebDriver nie zostanie poprawnie zamknięta, a pliki nie zostaną usunięte z pamięci. Może to spowodować błędy wycieku pamięci.
Powyższe wyjaśnienie należy wyjaśnić różnicę pomiędzy driver.close
i driver.quit
metod w WebDriver. Mam nadzieję, że uznasz to za przydatne.
Poniższa strona zawiera kilka dobrych wskazówek na temat testowania selenu: Link
quit()
: Zamyka ten sterownik, zamykając każde powiązane okno, które było otwarte.
close()
: Zamknij bieżące okno, zamykając przeglądarkę, jeśli jest to ostatnie otwarte okno.
close (): - Załóżmy, że otworzyłeś wiele okien przeglądarki z tą samą instancją sterownika, teraz wywołanie close () w instancji sterownika zamknie bieżące okno, na które wskazuje instancja sterownika. Ale instancja sterownika wciąż pozostaje w pamięci i może być używana do obsługi innych otwartych okien przeglądarki.
quit (): - Jeśli wywołasz quit () w instancji sterownika, a jedno lub więcej okien przeglądarki jest otwarte, zamknie wszystkie otwarte okna przeglądarki, a instancja sterownika zostanie usunięta, tzn. usunięta z pamięci. Dlatego teraz nie można użyć tej instancji sterownika do wykonania innej operacji po wywołaniu jej na quit (). Jeśli to zrobisz, wygeneruje wyjątek.
dispose (): - Nie sądzę, aby istniała metoda usuwania dla instancji WebDriver.
Możesz przejść do tego oficjalnego linku do dokumentu selenium java w celach informacyjnych.
close () to polecenie webdriver, które zamyka aktualnie aktywne okno przeglądarki. Pomimo znanej nazwy dla tej metody WebDriver
jest nie zaimplementować AutoCloseable
interfejs .
Jeśli w trakcie procesu automatyzacji otwarte jest więcej niż jedno okno przeglądarki, polecenie close () zamknie tylko bieżące okno przeglądarki, które jest w tym momencie aktywne. Pozostałe okna przeglądarki nie zostaną zamknięte. Aby zamknąć bieżące okno przeglądarki, można użyć następującego kodu:
porzucić() to polecenie webdriver, które wywołuje metodę driver.dispose, która z kolei zamyka wszystkie okna przeglądarki i kończy sesję WebDriver. Jeśli nie użyjemy quit () na końcu programu, sesja WebDriver nie zostanie poprawnie zamknięta, a pliki nie zostaną usunięte z pamięci. Może to spowodować błędy wycieku pamięci.
Jeśli proces automatyzacji otwiera tylko jedno okno przeglądarki, polecenia close () i quit () działają w ten sam sposób. Oba będą różnić się funkcjonalnością, gdy w Automatyzacji zostanie otwarte więcej niż jedno okno przeglądarki.
Aby zobaczyć powyższy odnośnik : kliknij tutaj
Polecenie Dispose Funkcja Dispose () powinna wywołać Quit () i wygląda na to, że tak. Ma jednak ten sam problem, że wszelkie kolejne działania są blokowane do momentu ręcznego zamknięcia PhantomJS.
Link referencyjny
Różnica między driver.close () i driver.quit ()
driver.close - Zamyka okno przeglądarki, w którym ustawiony jest fokus.
driver.quit - Zasadniczo wywołuje metodę driver.dispose, która z kolei zamyka wszystkie okna przeglądarki i kończy sesję WebDriver z wdziękiem.
Selenium WebDriver
WebDriver.Close()
Ta metoda służy do zamknięcia bieżącego otwartego okna. Zamyka bieżące otwarte okno, na którym skupia się sterownik.
WebDriver.Quit()
Ta metoda służy do zniszczenia instancji WebDriver. Zamyka wszystkie okna przeglądarki powiązane z tym sterownikiem i bezpiecznie kończy sesję. Wywołania WebDriver.Quit () Dispose.
WebDriver.Dispose()
Ta metoda zamyka wszystkie okna przeglądarki i bezpiecznie kończy sesję