Selenium ıle Tabloya Veri Ekleme
#1
Selamlar,

Öncelikle bu site ile kendimi bana yettiği ölçüde geliştirdim ve bu sebeple access-sql'e teşekkürler ederim.

Sorum şu şekilde: Selenium kullanarak VBA ile sitedeki verileri Excel e getirebiliyorum.
Bu Excel sayfasını bağlı tablo yaparak access içerisinde kullanıyorum. Güncelleme sorgusu kullanarak excel verilerini, diğer kullanıcılar da kullanabilsin diye, başka bir bağlı tablo içerisine ekliyorum.
Bu işlemleri yapmamak için aşağıda kullandığım kodları direk access tablosuna ekleme yapacak şekilde nasıl kullanabilirim? 
Not: Site ve giriş bilgileri gizlenmiştir.

Visual Basic
  1. Sub inwh()
  2. Dim cwb As List
  3. Dim sc As List
  4. Dim kargono As List
  5. Dim regnumber As List
  6. Dim toplam As List
  7.  
  8. Dim x As New Selenium.WebDriver
  9.  
  10. x.Start "chrome"
  11.  
  12.  
  13. x.Get "http://xxxxxx/packages?search_type=&sort=created_at__desc&q=&warehouse_id=&status=0&paid=&custom_status=&start_date=&end_date=&limit=250&search="
  14. x.FindElementById("email").SendKeys "xxxxxx"
  15. x.FindElementById("password").SendKeys "xxxxxx"
  16. x.FindElementByXPath("/html/body/div[2]/div/div/div/form/div/div[5]/button").Click
  17.  
  18. Set cwb = x.FindElementsByXPath("//tr/td[3]").Text
  19. Set sc = x.FindElementsByXPath("//tr/td[2]").Text
  20. Set kargono = x.FindElementsByXPath("//tr/td[4]").Text
  21. Set regnumber = x.FindElementsByXPath("//tr/td[5]").Text
  22. Set toplam = x.FindElementsByXPath("//tr/td[16]").Text
  23.  
  24.  
  25.  
  26. cwb.ToExcel Sheets("sayfa1").Range("a2")
  27. sc.ToExcel Sheets("sayfa1").Range("b2")
  28. kargono.ToExcel Sheets("sayfa1").Range("c2")
  29. regnumber.ToExcel Sheets("sayfa1").Range("d2")
  30. toplam.ToExcel Sheets("sayfa1").Range("e2")
  31.  
  32.  
  33. End Sub



Excel sayfasına eklenen örnek aşağıdadır.
Visual Basic
  1. CWB # SC Track #  Reg num Toplam
  2. APT00088304 ✅ TY1186910073 13,1
  3. APT00088305 ✅ 7330000378199648 31,7
  4. APT00088306 ✅ 1884028322552 4,4
  5. APT00088307 ✅ 7330000402599178 18
  6. APT00088308 ✅ 52647827880 26,4
  7. APT00088310 ✅ 1884683415411 4,2
  8. APT00088312 ✅ 1885021761296 6,2
  9. APT00088313 ✅ 52194455833 95,7
  10. APT00088314 ✅ 917086035984 34,4
  11. APT00088315 ✅ TY1181550068 12,5
  12. APT00088316 ✅ 1885254996058 14,3
  13. APT00088317 ✅ 40099189872 24,4
  14. APT00088318 ✅ 20085166221 32,8
  15. APT00088319 ✅ 7330000399505534 5,7
  16. APT00088357 ✅ 480693589235 10,9
  17. APT00088358 ✅ 796159492030 37,4
  18. APT00088359 ✅ 172474505212 28,5
  19. APT00088360 ✅ 103235556753 13,4
  20. APT00088361 ✅ 98634913333 20,4
  21. APT00088362 ✅ 310094752824 67,1
  22. APT00088309 ✅ 1885015027889 7,6
  23. APT00088320 ✅ 1884825285006 3
  24. APT00088311 ✅ 7330000392553310 26
  25. APT00088321 ✅ 1885060102615 82,8


Yardımlarınız için şimdiden teşekkürler.
Okan



  Alıntı
Bu mesajı beğenenler:
#2
Visual Basic
  1. Sub inwh()
  2. Dim cwb As List
  3. Dim sc As List
  4. Dim kargono As List
  5. Dim regnumber As List
  6. Dim toplam As List
  7.  
  8. Dim x As New Selenium.WebDriver
  9.  
  10. x.Start "chrome"
  11.  
  12.  
  13. x.Get "http://xxxxxx/packages?search_type=&sort=created_at__desc&q=&warehouse_id=&status=0&paid=&custom_status=&start_date=&end_date=&limit=250&search="
  14. x.FindElementById("email").SendKeys "xxxxxx"
  15. x.FindElementById("password").SendKeys "xxxxxx"
  16. x.FindElementByXPath("/html/body/div[2]/div/div/div/form/div/div[5]/button").Click
  17.  
  18. Set cwb = x.FindElementsByXPath("//tr/td[3]").Text
  19. Set sc = x.FindElementsByXPath("//tr/td[2]").Text
  20. Set kargono = x.FindElementsByXPath("//tr/td[4]").Text
  21. Set regnumber = x.FindElementsByXPath("//tr/td[5]").Text
  22. Set toplam = x.FindElementsByXPath("//tr/td[16]").Text
  23.  
  24. 'ACCESS Dosyasına Aktarım
  25. Dim strSQL As String
  26. strSQL = "INSERT INTO TabloAdı(cwb,sc,kargono,regnumber,toplam) " _
  27. "VALUES (cwb,sc,kargono,regnumber,toplam);"
  28.  
  29. DoCmd.RunSQL (strSQL)
  30.  
  31.  
  32. ' EXCEL Dosyasına Aktarım
  33. cwb.ToExcel Sheets("sayfa1").Range("a2")
  34. sc.ToExcel Sheets("sayfa1").Range("b2")
  35. kargono.ToExcel Sheets("sayfa1").Range("c2")
  36. regnumber.ToExcel Sheets("sayfa1").Range("d2")
  37. toplam.ToExcel Sheets("sayfa1").Range("e2")
  38.  
  39.  
  40. End Sub



Access tablosuna aktarırken alan isimleri ile gelen verilerin ismi aynı kullanılmıştır. Alan isimleri farklı ise INSERT INTO'dan sonra belirtilebilir.



  Alıntı
Bu mesajı beğenenler:
#3
Visual Basic
  1. Sub inwh()
  2. Dim cwb As List
  3. Dim sc As List
  4. Dim kargono As List
  5. Dim regnumber As List
  6. Dim toplam As List
  7.  
  8. Dim x As New Selenium.WebDriver
  9.  
  10. x.Start "chrome"
  11.  
  12.  
  13. x.Get "http://xxxxxx/packages?search_type=&sort=created_at__desc&q=&warehouse_id=&status=0&paid=&custom_status=&start_date=&end_date=&limit=250&search="
  14. x.FindElementById("email").SendKeys "xxxxxx"
  15. x.FindElementById("password").SendKeys "xxxxxx"
  16. x.FindElementByXPath("/html/body/div[2]/div/div/div/form/div/div[5]/button").Click
  17.  
  18. Set cwb = x.FindElementsByXPath("//tr/td[3]").Text
  19. Set sc = x.FindElementsByXPath("//tr/td[2]").Text
  20. Set kargono = x.FindElementsByXPath("//tr/td[4]").Text
  21. Set regnumber = x.FindElementsByXPath("//tr/td[5]").Text
  22. Set toplam = x.FindElementsByXPath("//tr/td[16]").Text
  23. For each döngüsü
  24. Call VeriAktar(cwb, sc, kargono, regnumber, toplam)
  25. next
  26.  
  27. End Sub



Visual Basic
  1. Sub VeriAktar(Sut1, Sut1, Sut2, Sut3, Sut4 As String, Sut5 As Double)
  2. Dim Kyt As DAO.Recordset, VT_Yer As String
  3.  
  4. VT_Yer = "D:\___.accdb" '//////// Access Dosyasi /////////////////////
  5.  
  6. Set Kyt = dbengine.OpenDatabase(VT_Yer).OpenRecordset("Select * From Tablo1")
  7. Kyt.AddNew
  8. Kyt!cwb = Sut1
  9. Kyt!sc = Sut2
  10. Kyt!kargono = Sut3
  11. Kyt!regnumber = Sut4
  12. Kyt!toplam = Sut5
  13. Kyt.Update
  14. Kyt.Close: Set Kyt = Nothing
  15. End Sub



Tablo1 ve Kyt! kelimeleri sizin Access tablo ve alan adlari olmali. VT_Yer access dosya konumu.
olarak dener misiniz?



  Alıntı
Bu mesajı beğenenler:
#4
Onur Bey Selam,

Cevabınız için teşekkür ederim.
Yazdığınız yöntemi daha önce denedim.
Sizin yazdığınız şekilde de denedim maalesef başarılı olamadım. 
For each döngüsü ile print.debug yaparak verileri görebiliyorum. Fakat tabloya eklemekte bir türlü başarılı olamadım.



  Alıntı
Bu mesajı beğenenler:
#5
For...Next ile Mesaj 3 yöntemini dener misiniz?



  Alıntı
Bu mesajı beğenenler:
#6
Sezgin Bey,
Teşekkürler yardımlarınız için. Sorunumu çözdünüz.

Düzenlemeler aşağıdadır. Belki bazı arkadaşlarımıza yardımı dokunur.

modül
Visual Basic
  1. Sub Veriaktar(CWBb, scs, kargono, regnumb, topla)
  2. Dim Kyt As DAO.Recordset, VT_Yer As String
  3.  
  4. VT_Yer = "C:\Users\okano\OneDrive\Desktop\AP-V02.17.4.accdb" '//////// Access Dosyasi /////////////////////
  5.  
  6. Set Kyt = DBEngine.OpenDatabase(VT_Yer).OpenRecordset("Select CWB,sc,track,regnumber,toplam From site")
  7. Kyt.AddNew
  8. Kyt!CWB = CWBb
  9. Kyt!sc = scs
  10. Kyt!track = kargono
  11. Kyt!regnumber = regnumb
  12. Kyt!toplam = topla
  13. Kyt.Update
  14. Kyt.Close: Set Kyt = Nothing
  15. End Sub


Buton olayı için
Visual Basic
  1. Private Sub Komut130_Click()
  2.  
  3. Dim x As New Selenium.WebDriver
  4.  
  5. x.Start "chrome"
  6.  
  7. x.Get "http://xxxxxx/packages?search_type=&sort=created_at__desc&q=&warehouse_id=&status=0&paid=&custom_status=&start_date=&end_date=&limit=25&search="
  8. x.FindElementById("email").SendKeys "xxxxxx"
  9. x.FindElementById("password").SendKeys "xxxxxx"
  10. x.FindElementByXPath("/html/body/div[2]/div/div/div/form/div/div[5]/button").Click
  11.  
  12. Dim CWBS, scs, kargonos, regnumbers, toplams As Selenium.WebElements
  13. Dim CWBb, sc, kargono, regnumb, toplamb As Selenium.WebElement
  14.  
  15. Set CWBS = x.FindElementsByXPath("//tr/td[3]")
  16. Set scs = x.FindElementsByXPath("//tr/td[2]")
  17. Set kargonos = x.FindElementsByXPath("//tr/td[4]")
  18. Set regnumbers = x.FindElementsByXPath("//tr/td[5]")
  19. Set toplams = x.FindElementsByXPath("//tr/td[16]")
  20.  
  21. For i = 1 To CWBS.Count
  22.  
  23. CWBb = x.FindElementsByXPath("//tr/td[3]")(i).Text
  24. topla = x.FindElementsByXPath("//tr/td[16]")(i).Text
  25. scs = x.FindElementsByXPath("//tr/td[2]")(i).Text
  26. kargono = x.FindElementsByXPath("//tr/td[4]")(i).Text
  27. regnumb = x.FindElementsByXPath("//tr/td[5]")(i).Text
  28.  
  29. 'Debug.Print CWBb, scs, kargono, regnumb, topla
  30. Call Veriaktar(CWBb, scs, kargono, regnumb, topla)
  31. Next
  32.  
  33.  
  34. End Sub





  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Tabloya Değer Kümesinden Veri Seçerek Veri Girişi Saglanması sevincili 2 113 26-03-2024, 20:07
Son Mesaj: sevincili
  Access Formu üzerinden Sql Server Tabloya Nasıl Veri Kaydı Yapılır karacahil 4 204 15-02-2024, 12:10
Son Mesaj: halily
  Tabloya Qr Kodla Veri Giriş SBNS 3 171 08-02-2024, 13:24
Son Mesaj: BeyTor
access-sql-18 Insert ile formdan tabloya kayıt ekleme Enigmatic 18 20.636 07-02-2024, 18:41
Son Mesaj: halil.tefci
  [TABLO] Seçilen Projeye Göre Tablolara Veri Ekleme webtenoyna 4 132 24-12-2023, 16:47
Son Mesaj: webtenoyna
  [FORM] İLİŞKİSİZ FORMDAN TABLOYA VERI KAYDETME moskovic 24 20.291 06-07-2023, 12:11
Son Mesaj: dsezgin
  Ilişkisiz Formdan Tabloya Verı Kaydetme erol1919 2 206 18-06-2023, 21:13
Son Mesaj: alperalper
  [VBA] bir tablodan bir tabloya veri aktarma hknct 7 3.594 06-02-2023, 21:35
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi