Selenium ile ilgili bir soru
9
●130
- 30-01-2021, 12:47:44Arkadaşlar selam, Bir sorun ile karşılaştım. Nasıl bir sorun deseniz selenium ile açtığım web sitesinde nereye tıkladığımı öğrenmek istiyorum. Mesela ben mause ile logoya tıkladım bunu programdan hangi komut ile xpatch yolunu öğretenebilirim ? Yazılım c# ile hazırlanmaktadır.
- 30-01-2021, 12:54:06Selenium, çalışma mantığında zaten herhangi bir aksiyonu gerçekleştirmeden öncr ona elementi sizin anlatmanız gerekiyor dolayısıyla zaten bunu biliyor olmalıyız , fakat eğer ilgili elemente ait herhangi bir attribute değerine ulaşmak istiyorsanız bu durumda getAttribute() metodunu kullanabilirsiniz .
- 30-01-2021, 12:58:06hocam cevabınız için teşekkür ederim. ile tıkladığım elementin xpatch yolunu öğrenmek istiyorum sadece mesela logoya tıkladım bana xpatch yolunu verecek ben bunu sayfayı incele yolu ile alabiliyorum zaten ama program üzerinden almak istedim nasıl yapabilirim bunu herhangi bir yere tıklamış olabilirim mesela logo değilde anasayfaya tıkladım bunun xpatch yolunu öğrenmek istiyorumbycyberchild adlı üyeden alıntı: mesajı görüntüle
- 30-01-2021, 13:23:37Tam olarak , bilinen bir elementin xpath ini çalışma zamanında görmek istiyoruz anladığım kadarı ile bunu JS ile parent,child element mantığı ile çıkarabiliriz sanırım hazır bir kod bloğu vardı bende bunun için bulur isem ileteceğim buradan
- 30-01-2021, 13:34:53Tam olarak bilinmeyen bir elementi mause tıklayınca xpatch olarak konumunu öğrenmek istiyorum sadece bu hocam yardımınız için teşekkür ederim beklemedeyim.bycyberchild adlı üyeden alıntı: mesajı görüntüle
- 30-01-2021, 13:43:11Javascript ile yaparak xpath değil de direkt olarak elementi geri döndürebilirsiniz. Bu sayede xpath ile uğraşmadan direkt elementi almış olur istediğiniz şekilde kullanabilirsiniz.
Yani IWebElement element = driver.FindElement... yerine IWebElement element = JS'den gelen. şeklinde kullanabilirsiniz, aynı şey olur mantıken
JS kodu:
document.addEventListener('click', function(e) { e = e || window.event; var target = e.target || e.srcElement, text = target.textContent || target.innerText; console.log(target); }, false);Burada tarayıcının konsoluna yazdırdım siz orada return target derseniz geri döner. C# kısmında da ona göre ayarlamanız gerekir. Bunu C# 'ta tek seferlik alırsınız. Sonrasında sürekli almak istediğinizde kuracağınız algoritma size kalmış. Kolay gelsin. - 30-01-2021, 18:36:41Üstad koduna sanki şu if blogunu eklesek biraz daha iyi olur zira 2 leme oluyorAdilcanTopuz adlı üyeden alıntı: mesajı görüntüle
//EBS Click Logging... document.addEventListener('click', function(e) { e = e || window.event; var target = e.target || e.srcElement, text = target.textContent || target.innerText; if (target != "") { console.log(target); } }, false); - 30-01-2021, 18:46:08şimdi getAttribute değerlerini döndürür şimdi senin burada yapman gereken ise console daki bu değerleri alıp xpath oluşturmaktır misalwindturks adlı üyeden alıntı: mesajı görüntüle
string xpath = //*[@class='"+consoldangelendgr+"'];
gibi aldığın değere göre bir if yapabilirsin mesela class name,tagname vb. vb.
document.addEventListener('click', function(e) { e = e || window.event; var target = e.target || e.srcElement, text = target.textContent || target.innerText; if(target!="") { console.log(target.getAttribute("class")); } }, false); - 31-01-2021, 01:40:05Arkadaşlar hepinize tek tek çok teşekkür ederim. Şimdi tek sorunum kaldı console yi okuyamıyorum c# ile null geliyor hep ama tarayıcıdan kontrol ettiğimde istediğim veriler oraya basıyor. Bunu nasıl düzeltip konsoldan verileri alabilirim ?
AdilcanTopuz adlı üyeden alıntı: mesajı görüntüleebubekirbastama adlı üyeden alıntı: mesajı görüntüleebubekirbastama adlı üyeden alıntı: mesajı görüntüle