selenium obsługa implicitlyWait

0

Cześć,
próbuje swoich sił w ramach prostych testów automatycznych jednak napotkałem problem mam nadzieję, że ktoś z Was będzie mi w stanie wytłumaczyć co jest źle z moimi założeniami...
Problem dotyczy banalnego fragmentu otóż sprawdzam czy została załadowana strona z określoną zawartością ("Moja testowa podstrona 1") oraz element ten został załadowany w określonym czasie (implicitlyWait(1000,TimeUnit.NANOSECONDS) jeśli nie to powinien pojawić się alert. Czas przyjęty został na tyle niski aby test zakończył się niepowodzeniem.

/ Weryfikacja czy załadowana się strona z poprawną zawartością
WebElement tekst1 = driver.findElement(By.xpath("html/body/div[1]/div/div/header/h1"));waitFor();
driver.manage().timeouts().implicitlyWait(1000,TimeUnit.NANOSECONDS);
if (!tekst1.getText().contains("Moja testowa podstrona 1"))
throw new SeleniumException("Nie znaleziono tekstu: "Moja testowa podstrona 1");

pytanko jak zrobić poprawne odwołanie do implicitlyWait które odpowie alertem ?
moja propozycja poniżej:
try {
driver.findElement(By.xpath("html/body/div[1]/div/div/header/h1");
fail("wystąpił wyjątek");
} catch (strona działa zbyt wolno)

1

Używaj Explicitów*, do tego służą. Zresztą implicit i tak wali wyjątkiem jeśli się nie załaduje, dostajesz TimeoutException. Chcesz go scatchować i puścić swój? nie mam pojęcia po co.

*Explicit Wait to wait który oczekuje na konkretną akcję w selenium, w Javie wyglądałoby to tak:

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

Czeka to na akcje (w tym wypadku na pojawienie się elementu w DOM strony) i jeśli element nie pojawi się, TimeoutException jest rzucony. Twój implicit to wait na cały test, czyli każda akcja która jest, otrzymuje taki max czasu. Ogólnie uważa się używanie implicitów za złą praktykę w testach.

Edit bo nie zauważyłem, ta weryfikacja jest do d**y. W weryfikacji nie stosujesz faili tylko asercje. Co to za metoda waitFor() i skąd ona się tu wzieła? I czemu chcesz odwoływać się do implicita w try catchu - powtarzam, on i tak wali wyjątkiem jeśli nie znajdzie elementu. I ostatnia sprawa, te XPATHy wyglądają okropnie, i są bardzo niestabilne. Nie używaj nigdy XPATHów jako ścieżek bezpośrednich, bo jeden element na stronie się zmieni, a Twoje testy lecą do kosza.

Przeczytaj dokumentację koniecznie, bo to się nie nadaje do niczego.

0

ale jeśli znajdzie element na stronie to chciałbym aby sprawdził czy się załadował w przyjętym czasie jeśli nie to ma wywalić błąd.

będę musiał poczytać... :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1