merhaba c# ve selenium ile otomasyon programlıyorum ancak c#'la henüz 1 haftayı geçiktir uğraşıyorum. birkaç sorunum var sanırım çözümleri basit ancak tam aradığımı bulamadım.
1- thread sleep ile programı bekletiyorum ancak gördüğüme göre zararlı bir olaymış ve program çoğu zaman yanıt vermiyorda kalabiliyor. thread sleep yerine sağlıklı olarak hangi fonksiyonu kullanıp programı işlem yapmadan önce bekletebilirim?
2- for döngümün içinde selenium ile browser işlemlerim oluyor. ancak bazen mesela bir obje bulunamıyor ve program crash veriyor. mesela for döngüsü içinde bir hata olduğunda o döngüyü bitirip yeni döngüye girmesini nasıl sağlayabilirim? döngüde beklenmedik bir hata olursa orada bıraksın o döngüyü ve yeni döngüye geçsin.
teşekkür ederim.
c# ile ilgili sorunlarım
4
●202
- 31-01-2019, 23:03:441-) Programın yanıt vermiyorda kalması Thread.Sleep komutunun sorunlu olmasından kaynaklanmıyor, siz doğrudan GUI işlemlerini çalıştıran main threadı uyutuyorsunuz. Eğer bu komutu sağlıklı kullanmak istiyorsanız, yeni bir thread oluşturmalısınız ve o threadın çalıştırdığı fonksiyon içinde kullanmalısınız. Yada basitçe ekstra fonksiyon vs. tanımlamadan lambda expression ile şöyle birşey yapabilirsiniz.
new Thread(() => { // ayrı thread içinde çalıştıracağınız kodları buraya yazın.. }) { IsBackground = true }.Start();2-) Try Catch kullanarak oluşan hataları yakalayıp, hataya göre program akışı değiştirebilirsiniz. - 31-01-2019, 23:07:55try catch hakkında videolar izliyorum. ama atıyorum programım 250 satır falan. her sorun oluşabilecek yer için mi try catch yapmam gerekir? ve mesela try x oldu ise catch de foru bitir yeni fora geç şeklinde mi yapacağım?pr1d3 adlı üyeden alıntı: mesajı görüntüle
mesela;
try {
işlem yapılan kodlar vs
}
catch { // hata oluştuysa
continue;
}
bu doğru bir yapı mı?
teşekkürler yorumunuz için. - 31-01-2019, 23:34:07Selenium ile aldığınız hatalarda continue işinize yaramayacaktır, bu komut sadece döngü içinde çağrıldığı kısımdan sonrasını çalıştırmadan, döngünün bir sonraki elamanla devam etmesini sağlar. Genelde obje örneğinin bulunamaması, sayfanın tam olarak yüklenmeden objeye başvurmaya çalışmanızdan kaynaklanıyordur. Bu durumda kodlar çalışmadan bekleme süresini artırmayı denebilirsiniz. Hala hata oluyorsa catch bloğu içinde de bekleme koyarak tekrar denemesini sağlayabilirsiniz. Genelde önerilmez ama bu tür durumlar için goto gerçekten işe yarayan bir çözüm olabiliyortristy adlı üyeden alıntı: mesajı görüntüle

int denemeSayac = 0; tekrardene:; try { } catch (Exception ex) { if (denemeSayac > 2) { denemeSayac = 0; throw ex; // 3 kere denemeye rağmen hala hataysa exception fırlat } else { denemeSayac++; Thread.Sleep(3000); goto tekrardene; } }Bu video hata yakalama için çok iyi örnekler içeriyor.
https://www.youtube.com/watch?v=LSkbnpjCEkk - 31-01-2019, 23:35:54
