Explicit Wait
Explicit wait, Web Driver a belli şartlarda (Expected Conditions) "ElementNotVisibleException" hatası vermeden önce en çok ne kadar beklemesi gerektiğini söyler.
Explicit wait kullanırken "ExpectedCondtions" ı da kullanmalıyız ya da belirttiğimiz durumu Fluent Wait kullanarak ne kadarda bir kontrol edeceğimizi belirtmeliyiz.
public class AppTest { protected WebDriver driver; @Test public void tutorials() throws InterruptedException { System.setProperty ("webdriver.chrome.driver",".\\chromedriver.exe" ); driver = new ChromeDriver(); WebDriverWait wait=new WebDriverWait(driver, 20); String eTitle = "Blogger.com - Benzersiz, göz alıcı bir blog hazırlayın. Hizmetimiz ücretsizdir ve kullanımı kolaydır."; String aTitle = "" ; // launch Chrome and redirect it to the Base URL driver.get("https://www.blogger.com/about/?r=1-null_user" ); //Maximizes the browser window driver.manage().window().maximize() ; //get the actual value of the title aTitle = driver.getTitle(); //compare the actual title with the expected title if (aTitle.contentEquals(eTitle)) { System.out.println( "Test Passed") ; } else { System.out.println( "Test Failed" ); } WebElement blogLink; blogLink= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath( "/html/body/main/section[1]/header/a"))); blogLink.click(); }
Burada expectedConditions'daki elementin görünür olması durumu oluşana kadar waitDriverWait'deki süre kadar bekleyecek.
Aşağıdakiler Explicit Wait'deki beklenen durumlar(Expected Conditions):
- alertIsPresent()
- elementSelectionStateToBe()
- elementToBeClickable()
- elementToBeSelected()
- frameToBeAvaliableAndSwitchToIt()
- invisibilityOfTheElementLocated()
- invisibilityOfElementWithText()
- presenceOfAllElementsLocatedBy()
- presenceOfElementLocated()
- textToBePresentInElement()
- textToBePresentInElementLocated()
- textToBePresentInElementValue()
- titleIs()
- titleContains()
- visibilityOf()
- visibilityOfAllElements()
- visibilityOfAllElementsLocatedBy()
- visibilityOfElementLocated()
- isEnabled() : komut çalışmadan önce element enable mı değil mi onu doğrular.
- isDisplayed() : komut çalışmadan önce element görüntüleniyor mu, onu doğrular.
- isSelected() : check box, radio button, ya da drop-down daki değer seçilmiş mi, ona bakar. Başka elementlerde çalışmaz.
isEnabled(), isDisplayed(), and isSelected() kullanıldığında, WebDriver elementin sayfada bulunduğunu varsayar. Aksi takdirde NoSuchElementException hatası verir. Bundan kaçınmak için try-catch bloğu kullanmak gerekir ki program bölünmesin.
Eğer explicit waits kullanılırsa, catch deki exception, "TimeoutException" olmalıdır.
- alertIsPresent() - uyarı kutusu çıkana kadar bekler.
- elementToBeClickable() - elementin hem görünür hem de etkin olmasını bekler.
- frameToBeAvailableAndSwitchToIt() - verilen frame etkin olana kadar bekler, daha sonra otomatik olarak ona geçer.
Yorumlar
Yorum Gönder