• 03-09-2020, 18:46:37
    #1
    Chrome driver ile bir işlem yaptırıyorum. Bir butona tıklayıp, ardından cıkan seçeneklerden birine tikliyor.

    Fakat bazen sayfa geç yükleniyor, bazen sayfa yüklense .JS yüklenmiyor. En önemlisi bu .js bunu nasıl çözebiliriz
  • 03-09-2020, 18:51:25
    #2
    sayfanın yüklendiğine dair callback alın
  • 03-09-2020, 18:52:43
    #3
    protected void WaitForPageLoad()
    {
              wait.Until(driver=>((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
       }
  • 03-09-2020, 19:01:51
    #4
    @DOS;'un bahsettiği yöntem ile sayfanın yüklenmesini bekleyebilir ya da objelere tıklamadan önce görünür olduklarından emin olup işleme devam edebilirsiniz.

    WebDriverWait wait = new WebDriverWait(driver, 15);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='deneme']")));
    Google'da "Selenium Explicit Wait" yazarak konu hakkında daha detaylı bilgi edinebilirsiniz. Ayrıca objenin tıklanabilir olup olmadığını ve daha birçok kontrolü "Explicit Wait" ile kontrol edebilirsiniz.
  • 03-09-2020, 19:08:53
    #5
    Teşekkür ederim ilgilenenler için, peki sayfa yüklenip .js'ler tam yüklenmiyorsa burada ne yapabiliriz?
  • 03-09-2020, 22:40:46
    #6
    BoogeymaN adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim ilgilenenler için, peki sayfa yüklenip .js'ler tam yüklenmiyorsa burada ne yapabiliriz?
    ortalama bekletme süresini kontrol edip o kadar delay koyabilirsiniz hocam.
  • 04-09-2020, 21:20:56
    #7
    driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(15);
    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

    İlki sayfanın yüklenmesini max ne kadar bekleyeceğini ayarlar 15 sn den fazla sürerse timeout verir ona göre ayarlayın
    ikincisi elemente 20. saniyede işlem yapar.20 sn geçmeden yapmaz.
  • 06-09-2020, 17:01:33
    #8
    Kimlik doğrulama veya yönetimden onay bekliyor.
    sayfadan ziyade nesnenin yüklenmesini bekleyen fonksiyon çalıştırın. ayrıca süreli fonksiyon çalıştırmayın eninde sonunda patlar.