İçeriğe geç

c# Selenium OpenQA.Selenium.NoSuchElementException: ‘no such element: Hatası

c# da Selenium kütüphanesi ile yapılan çalışmalarda OpenQA.Selenium.NoSuchElementException: ‘no such element: Hatası alabilirsiniz. Bunun bir çok sebebi var tabi ama Selenium  kütüphanesini ilk defa kullanacakların genelde yanıldığı bir kaç noktaya değinmek istiyorum.

Öncelikle bu kütüphaneyi ilk defa kullanacaksanız

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

kütüphaneleriniz zaten ekli olması gerekiyor. Burada ben chrome driver kullanıyorum. Siz başka bir browser a ait driver a da kullanabilirsiniz.

Şimdi asıl hata ile karşılaştığımız kısma gelelim.

OpenQA.Selenium.NoSuchElementException: ‘no such element: bunun devamında sizin id,name,xpath,css gibi özellikler ile sayfada buldurmaya çalıştığınız elemanın adı yazar.

openqa.selenium.nosuchelementexception: 'no such element: unable to locate element: {"method":"css selector","selector":"*[

örnek olarak yukarıdaki kod da css selector özelliği belirtilen nesnenin sayfada bulunmadığını söylüyor. Bunun için önce bir kendinizi check edin kodlarınızın doğruluğunu, erişmek istediğiniz div buton text artık her neresiyse onun css özelliğini doğru edinin.

 

<button class="sqdOP  L3NKy   y3zKF     " type="submit"><div class="                     Igw0E     IwRSH      eGOV_         _4EzTm                                                                                                              ">Giriş Yap</div></button>

instagram sayfasının giriş butonunun css düzeni bu şekilde

“sqdOP L3NKy y3zKF ”  öncelikle aralarındaki boşlukları silin de .sqdOP.L3NKy.y3zKF başlarına nokta işareti atın. bunun sebebi css de class ların nokta ile çağırılmasıdır.

Bunun hallettik diyelim.

openqa.selenium.nosuchelementexception: 'no such element: unable to locate element: {"method":"css selector","selector":"*[

Hatamız hala devam ediyor. Öncelikle selenium kütüphanesi ile beraber kullanmamız gereken bir kütüphane daha var.

using System.Threading;

bu kütüphane sayesinde biz sayfaların yüklenmesi için süre tanımlayacağız.

istediğimiz url e girişi sağladıktan sonra sitenin yüklenmesi için örnek

Thread.Sleep(1000);

yukarıdaki gibi 1 saniyelik bir süre belirleyebiliriz. Tabi bu süreyi artırabilirsiniz yada azaltabilirsiniz. Bu sizin işlem yapmak istediğiniz sitenin yüklenme hızı ve sizin internet hızınıza göre değişebilir.

Genel de bu bekleme işlemi yapılmadan yani siteye girdi driver daha sitenin html içeriği yüklenmeden belirlediğiniz özelliğe göre site içerisinde nesneyi arıyor ve doğal olarak sayfa henüz yüklenmediği için bulamıyor. Özellikle yeni başlayanların en çok karşılaşacağı sorunların başında bu gelir. Umarın işinize yarar.

Tarih:c#Selenium