[Yardım]  Webbrowser üzerinden HTML Loginform doldurma

Excel programınıza Web Sayfalarından veri alarak çalışabileceğiniz bölüm.

Webbrowser üzerinden HTML Loginform doldurma

İleti#1)  makdemir » 28 Şub 2019 16:32

Merhaba;

"Excel VBA" kullanarak "hikvision" bir IP kameraya webbrowser üzerinden bağlanmak istiyorum.
Webbrowser ile kamera login formunu "Userform" üzerinde görebiliyorum. Ancak "username" ve "password" kısımlarını otomatik doldurup "GİRİŞ" tuşu ile VBA üzerinden bir türlü açamıyorum.
Üzerinde çalıştığım dosyayı ve html kaynak kodları ile elde ettiğim dosyayı ekledim.

Çok araştırmama rağmen herhangi bir ilerleme kaydedemedim. Her defasında "Run-time error '91': Object variable or With block variable not set" hatasını görüyorum.

Konu ile ilgili yardımlarınız için çok teşekkür ederim.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#2)  veyselemre » 28 Şub 2019 17:31

Şöyle bir deneyin;
Kod: Tümünü seç
Me.WebBrowser1.document.getElementById("username").innertext = "admin"
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#3)  Ozan İLGÜN » 01 Mar 2019 08:29

Kodu daha sayfa yüklenmeden çalıştırdığı için sayfada veri girilen kısmı bulamıyor. Webbrowser'lerin DocumentCompleted isimli bir event'i var. Sayfa yüklendiğinde tetikleniyor.Sayfa içi ile ilgili kodları buraya yazarsanız daha iyi olur.
Kod: Tümünü seç
Private Sub UserForm_Initialize()
WebBrowser1.Navigate2 smURL & ThisWorkbook.Path & "\login.html"
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
WebBrowser1.document.getElementById("username").innertext = "admin"
  WebBrowser1.document.getElementById("password").Value = "kamera01"
  WebBrowser1.document.getElementById("login").Click
End Sub


Yahut ben kodlarımı tek bir sub içinde bulundurmak istiyorum derseniz şu şekilde de yapabilirsiniz.
Kod: Tümünü seç
Private Sub UserForm_Initialize()
WebBrowser1.Navigate2 smURL & ThisWorkbook.Path & "\login.html"
Do Until WebBrowser1.readyState = READYSTATE_COMPLETE
   DoEvents
    Loop
WebBrowser1.document.getElementById("username").innertext = "admin"
  WebBrowser1.document.getElementById("password").Value = "kamera01"
  WebBrowser1.document.getElementById("login").Click
End Sub
ozan.ilgun@boun.edu.tr

Resim
Kullanıcı avatarı
Ozan İLGÜN
Forum Moderatörü
 
Adı Soyadı:Ozan İlgün
Kayıt: 20 Şub 2013 12:43
Konum: İst. Maltepe
Meslek: Arşivist
Yaş: 33
İleti: 2708
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul



Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#4)  makdemir » 01 Mar 2019 15:00

Cevaplarınız için teşekkürler Veysel Bey, Ozan Bey;

Tavsiyeleriniz üzerine kodlarda aşağıdaki gibi düzeltme yaptığımda kısmen çalıştı.

Private Sub UserForm_Initialize()
WebBrowser1.Navigate2 smURL & ThisWorkbook.Path & "\login.html"
Application.Wait (Now() + TimeValue("00:00:01"))
Me.WebBrowser1.document.getElementById("username").innerText = "admin"
Me.WebBrowser1.document.getElementById("password").innerText = "kamera01"
Me.WebBrowser1.document.getElementById("login").click
End Sub

Do - Loop döngüsü açmaya çalıştığım sayfa, ready olamadığından sanırım, çalışmadı.
Webbrowser - Document completed event' i de aynı şekilde sorun çıkardı.
Yerine 1 saniyelik bekleme koyarak halloldu.

Buradaki tek sorun olarak "Me.WebBrowser1.document.getElementById("login").click" satırı çalışmıyor. Sanırım login ilgili tuşun adı değil. Bu tuşun adının ne olduğunu ise html kaynak kodlardan bulamadım.
Dolayısıyla login yapamadım henüz.

Ne tavsiye edersiniz acaba? Tekrar teşekkürler.
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#5)  veyselemre » 01 Mar 2019 15:45

Şöyle bir deneyin;
Kod: Tümünü seç
WebBrowser1.document.getelementsbytagname("button")(0).Click
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#6)  makdemir » 01 Mar 2019 16:08

Merhaba Veysel Bey;

Belirttiğiniz kod sanki bir işlev görüyor ancak sayfaya yine login olmadı. Gördüğüm loginform arayüzünü ekledim.
Tavsiye ettiğiniz kodu girdikten sonra "Lütfen kullanıcı adını giriniz" şeklinde bir uyarı görmeye başladım.
Birkaç defa üstüste kodla "GİRİŞ" tuşuna "WebBrowser1.document.getelementsbytagname("button")(0).Click" ile tıklamaya çalıştım, sonuç olumsuz.
Her tıklamanın arasına bekleme süresi ekledim yine maalesef giriş yapılmadı.

Başka bir tavsiyeniz olur mu? Teşekkürler
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#7)  veyselemre » 01 Mar 2019 18:05

Birde böyle deneyin,
Kod: Tümünü seç
    WebBrowser1.Navigate2 smURL & ThisWorkbook.Path & "\login.html"
    Application.Wait (Now() + TimeValue("00:00:01"))

    Set chng = .document.createEvent("HTMLEvents")
    chng.initEvent "change", True, False

    Set user = WebBrowser1.document.getElementById("username")
    user.innerText = "admin"
    user.dispatchEvent chng

    Set pass = WebBrowser1.document.getElementById("password")
    pass.innerText = "kamera01"
    pass.dispatchEvent chng
   
    WebBrowser1.document.getelementsbytagname("button")(0).Click
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#8)  veyselemre » 01 Mar 2019 18:19

Kod: Tümünü seç
    WebBrowser1.Navigate2 smURL & ThisWorkbook.Path & "\login.html"
    Application.Wait (Now() + TimeValue("00:00:01"))

    Set chng = WebBrowser1.document.createEvent("HTMLEvents")
    chng.initEvent "change", True, False

    Set user = WebBrowser1.document.getElementById("username")
    user.innerText = "admin"
    user.dispatchEvent chng

    Set pass = WebBrowser1.document.getElementById("password")
    pass.innerText = "kamera01"
    pass.dispatchEvent chng
   
    WebBrowser1.document.getelementsbytagname("button")(0).Click
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#9)  makdemir » 02 Mar 2019 09:03

Veysel Bey, kodları denediğimde "Run-time error '438': Object doesn't support this property or method" uyarısı alıyorum.
F8 ile adım adım denediğimde programın takıldığı nokta aşağıdaki satır oldu.

chng.initEvent "change", True, False

İlginiz için teşekkürler.
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#10)  veyselemre » 02 Mar 2019 12:52

webbrowsere tab tuşunu göndererek ilgili username controlüne geldiğinde sendkeysle veya yukardaki kodla kullanıcı adını gönterdikten sonra enter gönderin olmazsa tekrar tab deneyin , tab tuşuyla password kısmına geçin yine doldurduktan sonra tab veya enter gönderin, buton zaten çalışıyor anlaşılan.
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#11)  veyselemre » 02 Mar 2019 13:09

Aşağıdaki gibi bir deneyin,
Kod: Tümünü seç
Private Sub UserForm_Initialize()

    WebBrowser1.Navigate2 smURL & ThisWorkbook.Path & "\login.html"
    Application.Wait (Now() + TimeValue("00:00:01"))
    WebBrowser1.SetFocus

    SendKeys ("{tab}")
    SendKeys ("admin")
    SendKeys ("{tab}")
    SendKeys ("kamera01")
    SendKeys ("{tab}")
   
    WebBrowser1.document.getelementsbytagname("button")(0).Click
   
End Sub
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#12)  makdemir » 04 Mar 2019 16:35

Sendkeys ile de sorun çözülmedi.

Sendkeys ("admin") ile webrowser textini doldurmak mümkün olmadı.
Sendkeys ("a"), Sendkeys ("d"), Sendkeys ("m"), Sendkeys ("i"), Sendkeys ("n") şeklinde de olmadı.

Tab tuşu ile gezinip getelemetbyID ile doldurup giriş tuşuna basmaya çalıştığımda da yine giriş tuşu tepki vermiyor.
Sendkeys ("{enter}") ile yine kullanıcı adı veya şifreyi giriniz diye ekstra uyarı alıyorum.

Başka bir yöntemimiz varmı acaba veya es geçtiğimiz küçük bir ayrıntı mı var? Teşekkürler
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#13)  veyselemre » 04 Mar 2019 17:48

Tek tabla belki admin yazılan text e gelmiyordur 2,3,4 kez tab göndererek deneyin. Ben göndermiş olduğunuz login kodlarında doldurdum. Normal browserde sayfayı açtığınızda direk kaç kez tab tuşuna basarak geliyorsunuz, admin kısmına onu kontrol edin.
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#14)  makdemir » 06 Mar 2019 06:24

Gönderdiğim login form sendkeys ile doldurulabiliyor, haklısınız. Ancak gerçekte kullandığım, kameraya eriştiğim login formda bu mümkün olmuyor. Mouse imleci direkt olarak (userform initialize olduğunda) username kısmında blink yapıyor. 1 kez tab ile passworda sonra 1 kez daha tab yapınca giriş tuşuna ulaşıyorum. Denemediğim tab tuşu sayısı, bekleme süresi vs... kombinasyon kalmadi. Şimdiye kadar bildirilen kodları kendi arasında enva-i çeşit derledim ama nafile. Konunun bu kadar zorlayacağını düşünmemiştim.
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#15)  veyselemre » 06 Mar 2019 15:09

Bird selenium basic deneyin;
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#16)  wolky78 » 07 Mar 2019 08:16

Merhaba,

Selenium basic hakkında bilgi veya doküman, örnekler nasıl bulabiliriz ?
Kullanıcı avatarı
wolky78
Siteye Alışmış
 
Adı Soyadı:volkan delebeler
Kayıt: 12 Ekm 2012 08:28
İleti: 301
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul

Cevap: Webbrowser üzerinden HTML Loginform doldurma

İleti#17)  makdemir » 13 Mar 2019 16:38

Selenium basic için gereken "SeleniumBasic-2.0.9.0.exe" setup' ını kurdum. İnternette bulduğum örnekler içinde userform içine gömülü webbrowser kullanarak web sayfası açmayı gösterir herhangi bir uygulama yok.
Haricen Firefox veya Google Chrome açabilmek benim işime yaramıyor.

Amacım VBA-Userform üzerinden kamera web formunun login sayfasını açabilmek.
Bu konuda farklı bir tavsiyeniz olur mu acaba?

Teşekkürler
Kullanıcı avatarı
makdemir
 
Kayıt: 13 Arl 2017 15:08
Meslek: Elektrik-Elektronik Mühendisi
Yaş: 40
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Gaziantep


Forum Excel ile Web Sayfaları Veri İşlemleri

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe