Selenium element sorunu
5
●108
- 22-05-2023, 02:37:11Merhaba arkadaşlar, selenium js diliyle bir bot yazıyorum ancak bir türlü element var mı diye sorgulayamadım. örnek olarak "<span class="a_atr">Üyelik bulunuyor</span>" bu clasda veri var mı diye sorgu yapmak istiyorum yardımcı olursanız çok sevinirim hayırlı forumlar dilerim.
- Kabul Edilen Cevap
- 1 Beğeni
-
- 22-05-2023, 02:46:09aşağıdaki xpath verisini selenium ile uyarlayıp try/catch atarak varmı yok mu sorgusu yapabilirsiniz.
var isFound = false; try{ var elementText = await driver.findElement(web.By.xpath("//span[contains(text(),'Üyelik bulunuyor')]")).text; isFound = true; }catch(err){ } - 22-05-2023, 02:50:51Hocam maalesef verdiğiniz kod hata veriyor.BeratYildiz adlı üyeden alıntı: mesajı görüntüle
if (driver.findElement(By.className("a_atr ")) != null) { bu şekilde yaptım ancak bu da crash ediyor botu - 22-05-2023, 02:55:15java ile mi yazıyorsunuz hocam botu. Kod C#'a benzer gibi duruyor da.GüçlüSMM adlı üyeden alıntı: mesajı görüntüle
crashı önlemek için try/catch olaylarını kullanın direkt. try/catch ile yoksa bile derlemeyi durdurtmaz. - 22-05-2023, 03:22:06Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.hocam değişken oluşturun xpath verisiyle aradığınız değeri ona atayın. Tıklama yapmayın ya da yazdırma işlemi yapmayın sonrasında if(element !=null ) yapabilirsiniz. else kısmında element null dönmüş olacak tıklama olmayacak hata alınmadan es geçilecek.
ya da şu şekilde yapabilirsiniz:
int bekle = 0; while(true){ try{ işlemi dene break; //işlem yapıldı döngüden çıkılabilir } catch{ if(bekle<15){ Thread.Sleep(1000); // belirli süre boyunca işlemi tekrar ediyoruz. Eğer sayfa açıldıktan ve belirli zaman geçtikten sonra gelen bir veriniz varsa bunu deneyin bekle++; } else{ break; // 15 kez 1er saniye arayla bekledik hala tıklayamadık artık çıkış yapma vakti. } } } - 22-05-2023, 03:24:48Çok teşekkür ederim hocam aradığım kod buyduripeapples adlı üyeden alıntı: mesajı görüntüle