{"id":2242,"date":"2023-08-22T17:43:40","date_gmt":"2023-08-22T17:43:40","guid":{"rendered":"https:\/\/gizemevkuran.com\/?p=2242"},"modified":"2023-08-22T17:43:44","modified_gmt":"2023-08-22T17:43:44","slug":"selenium-web-driver-wait-komutu","status":"publish","type":"post","link":"https:\/\/gizemevkuran.com\/?p=2242","title":{"rendered":"Selenium Web Driver: Wait Komutu"},"content":{"rendered":"\n<p>Daha \u00f6nceki http:\/\/gizemgulec.com\/2020\/09\/selenium-webdriver-sik-karsilasilan-hatalar\/ yaz\u0131mda bahsetti\u011fim exception\u2019lar\u0131n \u00e7o\u011funun \u00e7\u00f6z\u00fcm\u00fcnde \u2018wait\u2019 komutu yer almaktad\u0131r \u00e7\u00fcnk\u00fc bir web sayfas\u0131nda \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015f\u0131lan en b\u00fcy\u00fck sorun elementin farkl\u0131 sebeplerle bulunamamas\u0131d\u0131r. Bu noktada \u2018wait\u2019 komutunun kullan\u0131m amac\u0131na g\u00f6re farkl\u0131 t\u00fcrleri bulunmaktad\u0131r. Bunlar;<\/p>\n\n\n\n<p>Implicit Wait<\/p>\n\n\n\n<p>Explicit Wait<\/p>\n\n\n\n<p>Fluent Wait<\/p>\n\n\n\n<p>1)Implicit Wait<\/p>\n\n\n\n<p>Selenium\u2019da Implicit Wait, web s\u00fcr\u00fcc\u00fcs\u00fcne \u201cNo Such Element Exception\u201d olu\u015fturmadan \u00f6nce belirli bir s\u00fcre beklemesini s\u00f6ylemek i\u00e7in kullan\u0131l\u0131r. Varsay\u0131lan ayar 0\u2019d\u0131r. S\u00fcreyi belirledikten sonra, web s\u00fcr\u00fcc\u00fcs\u00fc bir exception atmadan \u00f6nce bu s\u00fcreyi bekleyecektir.<\/p>\n\n\n\n<p>Syntax:<\/p>\n\n\n\n<p>driver.manage().timeouts().implicitlyWait(TimeOut, TimeUnit.SECONDS);<\/p>\n\n\n\n<p>Implicit wait 2 parametre al\u0131r; ilkinde ne kadar bekleyece\u011finin de\u011feri verilirken, ikinci parametrede zaman\u0131n ne cinsinden olaca\u011f\u0131 verilir(\u00d6rne\u011fin; SECONDS, MINUTES, MILISECOND, MICROSECONDS, NANOSECONDS, DAYS, HOURS).<\/p>\n\n\n\n<p>driver.manage().timeouts().implicitlyWait(15, TimeUnit.MINUTES);<\/p>\n\n\n\n<p>B\u00f6yle bir wait komutu ekledi\u011fimizde, 15 dakika bekleme s\u00fcresi olacakt\u0131r.<\/p>\n\n\n\n<p>2)Explicit Wait<\/p>\n\n\n\n<p>Selenium\u2019da Explicit Wait, Web S\u00fcr\u00fcc\u00fcs\u00fcne belirli ko\u015fullar\u0131 (Expected Condition) veya \u201cElementNotVisibleException\u201d exception\u2019\u0131 atmadan \u00f6nce a\u015f\u0131lan maksimum s\u00fcreyi beklemesini s\u00f6ylemek i\u00e7in kullan\u0131l\u0131r. Ak\u0131ll\u0131 bir bekleme t\u00fcr\u00fcd\u00fcr ancak yaln\u0131zca belirli \u00f6\u011feler(elementler) i\u00e7in uygulanabilir. Dinamik olarak y\u00fcklenen Ajax \u00f6\u011felerini beklerken implicit wait\u2019ten daha iyi se\u00e7enekler sunar.<\/p>\n\n\n\n<p>Explicit Wait kulland\u0131\u011f\u0131m\u0131zda, \u201cExpectedConditions\u201d tan\u0131mlamal\u0131y\u0131z veya Fluent Wait kullanarak durumu ne s\u0131kl\u0131kla kontrol etmek istedi\u011fimizi yap\u0131land\u0131rmal\u0131y\u0131z.<\/p>\n\n\n\n<p>Syntax:<\/p>\n\n\n\n<p>wait.until(ExpectedConditions.typeofExpectedCondition(By.locator(\u201cvalueoflocator\u201d));<\/p>\n\n\n\n<p>Syntax\u0131 bir \u00f6rnek ile a\u00e7\u0131klayacak olursak;<\/p>\n\n\n\n<p>wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(\u201cabc\u201d));<\/p>\n\n\n\n<p>Bu \u00f6rnekte id de\u011feri \u201cabc\u201d olan element sayfada g\u00f6r\u00fcn\u00fcr olana kadar bekleme s\u00fcresi olacakt\u0131r.<\/p>\n\n\n\n<p>Explicit Wait i\u00e7in kullan\u0131labilen \u00e7ok fazla say\u0131da Expected Condition \u00e7e\u015fitleri bulunmaktad\u0131r. Bunlar;<\/p>\n\n\n\n<p>alertIsPresent()<\/p>\n\n\n\n<p>elementSelectionStateToBe()<\/p>\n\n\n\n<p>elementToBeClickable()<\/p>\n\n\n\n<p>elementToBeSelected()<\/p>\n\n\n\n<p>frameToBeAvaliableAndSwitchToIt()<\/p>\n\n\n\n<p>invisibilityOfTheElementLocated()<\/p>\n\n\n\n<p>invisibilityOfElementWithText()<\/p>\n\n\n\n<p>presenceOfAllElementsLocatedBy()<\/p>\n\n\n\n<p>presenceOfElementLocated()<\/p>\n\n\n\n<p>textToBePresentInElement()<\/p>\n\n\n\n<p>textToBePresentInElementLocated()<\/p>\n\n\n\n<p>textToBePresentInElementValue()<\/p>\n\n\n\n<p>titleIs()<\/p>\n\n\n\n<p>titleContains()<\/p>\n\n\n\n<p>visibilityOf()<\/p>\n\n\n\n<p>visibilityOfAllElements()<\/p>\n\n\n\n<p>visibilityOfAllElementsLocatedBy()<\/p>\n\n\n\n<p>visibilityOfElementLocated()<\/p>\n\n\n\n<p>3)Fluent Wait<\/p>\n\n\n\n<p>Selenium\u2019da Fluent Wait, web s\u00fcr\u00fcc\u00fcs\u00fcn\u00fcn bir ko\u015fulu beklemesi i\u00e7in maksimum s\u00fcreyi ve \u201cElementNotVisibleException\u201d exception\u2019\u0131n\u0131 atmadan \u00f6nce ko\u015fulu kontrol etmek istedi\u011fimiz s\u0131kl\u0131\u011f\u0131 tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r. Nesne bulunana veya zaman a\u015f\u0131m\u0131 ger\u00e7ekle\u015fene kadar d\u00fczenli aral\u0131klarla web elementini kontrol eder.<\/p>\n\n\n\n<p>Bir eleman\u0131n farkl\u0131 zaman aral\u0131klar\u0131nda y\u00fcklendi\u011fi bir senaryo d\u00fc\u015f\u00fcnelim. \u00d6\u011fe 10 saniye, 20 saniye veya daha uzun bir s\u00fcre i\u00e7inde y\u00fcklenebilir. Bu durumda 20 saniyelik Explicit Wait tan\u0131mlarsak bir exception atmadan \u00f6nce belirtilen s\u00fcreye kadar bekleyecektir. Bu t\u00fcr senaryolarda, Fluent Wait \u00f6\u011feyi bulana kadar veya son zamanlay\u0131c\u0131 bitene kadar farkl\u0131 frekansta bulmaya \u00e7al\u0131\u015faca\u011f\u0131ndan, kullan\u0131m\u0131 ideal olacakt\u0131r.<\/p>\n\n\n\n<p>Syntax:<\/p>\n\n\n\n<p>Wait wait = new FluentWait(WebDriver reference)<\/p>\n\n\n\n<p>.withTimeout(timeout, SECONDS)<\/p>\n\n\n\n<p>.pollingEvery(timeout, SECONDS)<\/p>\n\n\n\n<p>.ignoring(Exception.class);<\/p>\n\n\n\n<p>De\u011fer vererek bir \u00f6rnek olu\u015fturacak olursak;<\/p>\n\n\n\n<p>Wait &lt;WebDriver&gt; wait = new FluentWait &lt;WebDriver&gt; (driver)<\/p>\n\n\n\n<p>.withTimeout(30, TimeUnit.SECONDS)<\/p>\n\n\n\n<p>.pollingEvery(5, TimeUnit.SECONDS)<\/p>\n\n\n\n<p>.ignoring(NoSuchElementException.class);<\/p>\n\n\n\n<p>Bu \u00f6rnekte maksimum bekleme s\u00fcresi 30 saniyedir ve 30 saniye olana kadar 5 saniyelik aral\u0131klarla elementin g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fc kontrol edilecektir.<\/p>\n\n\n\n<p>\u00d6zetle;<\/p>\n\n\n\n<p>Implicit, Explicit ve Fluent Wait seleniumda kullan\u0131lan farkl\u0131 beklemelerdir. Bu beklemelerin kullan\u0131m\u0131 tamamen farkl\u0131 zaman aral\u0131klar\u0131nda y\u00fcklenen elemanlara dayanmaktad\u0131r. Uygulamam\u0131z\u0131 test ederken Thread.Sleep() kullan\u0131lmas\u0131 her zaman tavsiye edilmedi\u011fi i\u00e7in bu bekleme \u00e7e\u015fitlerine ba\u015fvurulur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Daha \u00f6nceki http:\/\/gizemgulec.com\/2020\/09\/selenium-webdriver-sik-karsilasilan-hatalar\/ yaz\u0131mda bahsetti\u011fim exception\u2019lar\u0131n \u00e7o\u011funun \u00e7\u00f6z\u00fcm\u00fcnde \u2018wait\u2019 komutu yer almaktad\u0131r \u00e7\u00fcnk\u00fc bir web sayfas\u0131nda \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015f\u0131lan en b\u00fcy\u00fck sorun elementin farkl\u0131 sebeplerle bulunamamas\u0131d\u0131r. Bu noktada \u2018wait\u2019 komutunun kullan\u0131m amac\u0131na g\u00f6re farkl\u0131 t\u00fcrleri bulunmaktad\u0131r. Bunlar; Implicit Wait Explicit Wait Fluent Wait 1)Implicit Wait Selenium\u2019da Implicit Wait, web s\u00fcr\u00fcc\u00fcs\u00fcne \u201cNo Such Element Exception\u201d olu\u015fturmadan \u00f6nce<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[27],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts\/2242"}],"collection":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2242"}],"version-history":[{"count":1,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts\/2242\/revisions"}],"predecessor-version":[{"id":2243,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts\/2242\/revisions\/2243"}],"wp:attachment":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}