2015-05-08 10 views
7

Jestem zainteresowany wartością domyślną limitów czasu na selenach webdriver. ImplicitlyWait, SetPageLoadTimeout i SetScriptTimeout. Ponieważ chcę wiedzieć, czy muszę ustawić wartości dla tych przekroczeń czasu? lub domyślna wartość jest dobra dla pracy webmasterów selenu. Ale nie mogę znaleźć poprawnej odpowiedzi, ktoś mówi, że domyślną wartością jest 0, a inna mówi, że to 30 sekund.Domyślna wartość limitu czasu na selenowym webdriverze

Odpowiedz

9

Te trzy limity czasu są zarządzane przez stronę serwera równania Selenium. Twój skrypt, czy to w Javie, Pythonie, Ruby, C#, czy cokolwiek, jest klientem, który wysyła polecenia do serwera, który żyje w przeglądarce. (Nie może być pośrednikiem, który przekazuje polecenia do przeglądarki, jak siatki Selen Niestety, jest też czasem nazywany „serwer”.).

Serwer Firefox definiuje swoje limity czasu tak:

  • Limit czasu implicit wait jest domyślnie ustawiony na 0. Oznacza to, że jeśli polecenie, które znajdzie elementy, niczego nie znajdzie, nie będzie czekać.

  • Domyślnie page load timeout ma wartość -1. Oznacza to, że Selenium będzie czekać bez końca na załadowanie strony.

    Co to jest found nie jest takie samo, jak limit czasu ładowania strony. Jest to limit czasu między klientem Selenium a serwerem Selenium, który nie jest szczególnie dobrze wyjaśniony na stronie znalezionej przez Saifur.

  • Domyślnie script timeout ma wartość 0. Komentarz w kodzie źródłowym wyjaśnia:

    Czas, w milisekundach, ta sesja powinna poczekać na zakończenie wykonywania skryptów asynchronicznych. Jeśli ustawione na 0, to limit czasu nie zostanie uruchomiony do następnej pętli zdarzeń po wykonaniu skryptu. To da skryptom, które wykorzystują setTimeout oparty na 0, aby zakończyć.

    Tak więc, nawet jeśli jest ustawione na zero, skrypt asynchroniczny może być nadal wykonywany, ale musi zostać ukończony, zanim limit czasu Selenium będzie miał szansę na ponowne uruchomienie.

Jest to kod, który Selenium używa w Firefoksie. Inne przeglądarki używają różnych baz kodu, ale powinny zachowywać się konsekwentnie, przynajmniej w odniesieniu do rzeczy właściwych dla samej Selenium, takich jak te limity czasowe. Wartości i ich interpretacje powinny być takie same dla innych przeglądarek.

0

Dla domyślnego oczekiwania zawsze domyślnie czekać ZERO. Można to sprawdzić tutaj:

Selenium Webdriver diff. waits

A jeśli ustawiony niestandardowy czas potem kierowca WWW będzie czekać, aby uzyskać element, do tego czasu, a jeśli element nie znalazł do tego czasu to tylko kierowca internetowej rzuci wyjątek.

0

Dokumentacja Selenium jest bardzo niejasna na temat przekroczenia limitu czasu.

  1. Według this domyślny limit czasu domniemanej-wait to
  2. Według this dowolnej strony, że nie ładuje się w latach 60-tych powrócą komunikacji HTTP limit czasu, chyba że wyraźnie nadpisać koniec czasu.
  3. Niestety, nie znalazłem żadnego odniesienia do dostarczenia na ScriptTimeout. Ale domyślnie jest to zgodnie z moją wiedzą i doświadczeniem. Zaktualizuje wszelkie odniesienia później: