Doğru ve yanlış giriş için mesaj nasıl alırım?

ByKarahanlı
03-01-2019, 12:46   |  #1  
ByKarahanlı avatarı
OP Taze Üye
Teşekkür Sayısı: 0
4 mesaj
Kayıt Tarihi:Kayıt: Oca 2019

 

C # Form'da çevrimiçi bir web sitesi girişi düzenledim.Ancak yanlış giriş hatası mesajı ve doğru giriş için bir mesaj gönderemiyorum. "if " ve "else" için doğru çağrıyı yapamadım. veya "try-catch" kullanım alanlarını belirleyemiyorum. Nette çok araştırdım zira yakın kodlama bulamadım. Aşağıdaki kod ile bir örnek verebilir misiniz? Yardım edebilirseniz sevinirim.Teşekkürler. Not: Aşağıdaki kod çalışıyor, zira "webBrowser"i visible=false kullandığım için girişi veya hatayı göremiyorum.!!

privatevoid btnLogin_Click(object sender,EventArgs e){varInputElements= webbMain.Document.GetElementsByTagName("Input");foreach(HtmlElement i inInputElements){if(i.GetAttribute("name").Equals("log")){
                    i.InnerText= txtUsername.Text;}if(i.GetAttribute("name").Equals("pwd")){
                    i.Focus();
                    i.InnerText= txtPassword.Text;}}


foreach(HtmlElement elem in webbMain.Document.GetElementsByTagName("Input")){if(elem.GetAttribute("value")=="Log In"){
                    elem.InvokeMember("Click");}}}}}

White-Fox
03-01-2019, 14:03   |  #2  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 149
1,042 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010

Ne yapmaya çalışıyorsun ? Bir siteye program ile login olmaya mı ?

Webbrowser şahsen ilk tercihim olmazdı. C# + selenium olarak google da aratırsan bolca kaynak bulabilirsin. Ve bu kadar kod külfetine de gerek kalmaz.

White-Fox bu faydalı yanıtı için aşağıdaki 1 kişiden teşekkür aldı... [ Göster ]
ByKarahanlı
03-01-2019, 20:17   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
4 mesaj
Kayıt Tarihi:Kayıt: Oca 2019

Kodun tamamı bu. Kod iyi çalışıyor, online mevcut bir siteye giriş yapıyor. (Bir Login Panel-Form1 ile) Yalnızca ihtiyacım olan: doğru giriş ve yanlış girişlerde mesaj vermesi. Bunu sağlayamıyorum, yalnızca giriş yapıyor ve webBrobser gizlenmesi gerektiği için ne olduğunu anlayamıyorum.

privatevoidForm1_Load(object sender,EventArgs e){
        webbMain.Navigate("Login URL'si-wp-login.php");}


privatevoid btnLogin_Click(object sender,EventArgs e){varInputElements= webbMain.Document.GetElementsByTagName("Input");foreach(HtmlElement i inInputElements){if(i.GetAttribute("name").Equals("log")){
                i.InnerText= txtUsername.Text;}if(i.GetAttribute("name").Equals("pwd")){
                i.Focus();
                i.InnerText= txtPassword.Text;}}


foreach(HtmlElement elem in webbMain.Document.GetElementsByTagName("Input")){


if(elem.GetAttribute("value")=="Log In"){
                elem.InvokeMember("Click");}//Error: 'void' type implicitly cannot be converted to 'bool' type.if(webbMain.Navigate("Site-done.page-URL/")){MessageBox.Show("Welcome! ");}else{MessageBox.Show("Wrong Login!!!");}// Sleep for 3 seconds.System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));Console.WriteLine("[DONE]");}}

White-Fox
03-01-2019, 20:39   |  #4  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 149
1,042 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010

Giriş yaptığınızda başka , yapamadığınızda başka sayfaya yönlenirsiniz.

Bu durumda yapamadığınızda yönlendiğiniz sayfada bir element seçip o elementin varlığını yokluğunu kontrol etmelisiniz.Böylece giriş başarılımı değil mi anlarsınız.

Normal şartlarda ayrık bu uygulamaların servis ile konuşması gerekir.Bu şekilde yapılan uygulamalar kırılgan olurlar.Site değiştiğinde çalışmaz hale gelirler.Yinede bu yoldan gitmek için webbrowser iyi bir tercih değil , aşırı ram tüketimi ve performans sorunları var.Kullandığı nesneler garbage collection tarafından bütünüyle bellekten atılamıyor.

Bu yüzden Selenium ile bir tarayıcı tabanlı iş yapsanız daha pratik ve kolay olur :) tahmini 4-5 satırda login işlemini yaparsınız.Ve böyle htmlnode gibi şeylerle de uğraşmazsınız.

Tercih sizin , Kolay gelsin...

White-Fox bu faydalı yanıtı için aşağıdaki 1 kişiden teşekkür aldı... [ Göster ]
ByKarahanlı
03-01-2019, 21:27   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
4 mesaj
Kayıt Tarihi:Kayıt: Oca 2019

Bana yalnızca şuradaki hatanın düzeltilmesi lazım. Hangi düzeltmeyi uyguladıysam VS hata mesajı verdi.. if için site bağlantısı koymayı deniyorum olmuyor. Bu konuda bir düzeltme yardımı istiyorum. Site bağlantısını nasıl tanımlayabilirim ve "if" ile ilişkilendire bilirim? Ayrıca Cevaplarınız için teşekkürler, yabancı sitelerde derdimi anlatamıyordum bile.

Error: 'void' type implicitly cannot be converted to 'bool' type

.if(webbMain.Navigate("Site-done.page-URL/"))

{MessageBox.Show("Welcome! ");

}

else

{MessageBox.Show("Wrong Login!!!");

}

White-Fox
03-01-2019, 22:41   |  #6  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 149
1,042 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010
Alıntı: ByKarahanlı  
Bana yalnızca şuradaki hatanın düzeltilmesi lazım. Hangi düzeltmeyi uyguladıysam VS hata mesajı verdi.. if için site bağlantısı koymayı deniyorum olmuyor. Bu konuda bir düzeltme yardımı istiyorum. Site bağlantısını nasıl tanımlayabilirim ve "if" ile ilişkilendire bilirim? Ayrıca Cevaplarınız için teşekkürler, yabancı sitelerde derdimi anlatamıyordum bile.

Error: 'void' type implicitly cannot be converted to 'bool' type

.if(webbMain.Navigate("Site-done.page-URL/"))

{MessageBox.Show("Welcome! ");

}

else

{MessageBox.Show("Wrong Login!!!");

}

Eğer url değerine göre istiyorsanız , şöyle yapın.

Webbrowserın documentcompleted olayının içerisine ;

e.Url.AbsolutePath.ToString();

e.Url.AbsoluteUri.ToString();

e.Url.ToString();

Yukarıdaki kodları(birini) public bir string değişkenine yazıp sonra 

if(publicstringdegisken.Equal("beklediğiniz url")) 

Şeklinde tepki verebilirsiniz.

yinede en sağlıklısı işlemlerinizi yaptıktan sonra sayfayı html olarak tarayın atıyorum facebookta giriş yapmadan profile ulaşamazsınız işlemlerinizi bitirin ve profilden isminizi çekmeye çalışın null dönüyorsa biliyoruz ki girememişsiniz.

White-Fox bu faydalı yanıtı için aşağıdaki 1 kişiden teşekkür aldı... [ Göster ]
ByKarahanlı
04-01-2019, 00:25   |  #7  
OP Taze Üye
Teşekkür Sayısı: 0
4 mesaj
Kayıt Tarihi:Kayıt: Oca 2019

Lütfen kodun içerisinde göster! her adımı araştırıp tanımlamaya çalıştım zira "Url" yi tanıtamadım. Yaptığım çoğu uygulama "geçerli bağlamda yok" veya "Çağrılamaz üye" hataları alıyor.. Aklımı donduran; Giriş login den sonra yüklenecek form ve programlar tamam, giriş login tamam, bir tek bu mesaj verme olayına takılı kaldım 4 gündür.. :( Lütfen kod içinde bir örnek verirmisin?

Turhost