• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Websayfasini PDF olarak kayit etmek

Katılım
27 Mayıs 2012
Mesajlar
28
Excel Vers. ve Dili
Office 2016 - ENG
Selamlar herkese,

Sorumuz web tarayicisinda goruntulenen sayfayi Ctrl+P Ile ya da Yazdir/Print butonuna tiklatarak(bu kisma kadar sorunsuz gelebiliyoruz) Google Chrome da cikan asagida ki pencereden PDF olarak herhangi bir klasore kayit ettirmek(spesifik istedigimiz klasor olursa tadindan yenmez tabi) ,

not duseyim unutmadan, Selenium Web Driver kullaniyorum, browser kontrolu icin

Degerli yardimlariniz icin simdiden tesekkur ederim, iyi calismalar

Yazdir penceresi;
212909


ilgili kodlar asagida ki gibi ;

Kod:
Sub cbol_browser()

Dim baglan As New Selenium.WebDriver
Dim elementler As WebElements
Dim element As WebElement

Dim colNumData As Range
Dim parameters As Worksheet
Dim datam As Worksheet

Set parameters = ThisWorkbook.Sheets("Parameters")
Set datam = ThisWorkbook.Sheets("Packing Data")

cbol_link = "https://bolservices.it.abb.com/cBOL/OrdersList"
Cbol_arama_linki = "https://bolservices.it.abb.com/cBOL/OrdersList"
tnt_dosya_kayit_yeri = parameters.Range("B3").Value & "\"
chrome_kayit_yeri = parameters.Range("B4").Value & "\"
po = columnLetterToNumber(colNumData, UCase(parameters.Range("B1").Value))
packing = columnLetterToNumber(colNumData, UCase(parameters.Range("B2").Value))

    lastrow_order = datam.Cells(datam.Rows.Count, po).End(xlUp).Row
    For looper = 2 To lastrow_order
baglan.Start "chrome"
    baglan.Get cbol_link
        baglan.Window.Maximize


    cokie_uyarisi = baglan.FindElementByXPath("//*[@id='abb-cookie-banner__button']").Text
    If cokie_uyarisi = "I AGREE" Then
        baglan.FindElementByXPath("//*[@id='abb-cookie-banner__button']").Click
    End If


logine_git:
loginvarmi = baglan.FindElementByXPath("/html/body/header/div/section[2]/a").Text
    If loginvarmi = "lock_open" Then
        baglan.FindElementByXPath("/html/body/header/div/section[2]/a").Click
    Else
            If baglan.FindElementByXPath("/html/body/header/div/section[2]/div[3]/a/i").Text = "person" Then
                GoTo a_atla
            End If
           
    GoTo logine_git
    End If
a_atla:

'kontrol et uye girisi yapilmis mi sayfa gelmis mi ?
menu_cubugu_git:
menu_cubugu_yazisi = baglan.FindElementByXPath("/html/body/header/div/section[1]/a").Text
    If menu_cubugu_yazisi = "menu" Then
        baglan.FindElementByXPath("/html/body/header/div/section[2]/a").Click
    Else
        GoTo menu_cubugu_git
    End If

        pack_number = ""
        sip_nom = ""
        sip_nom = datam.Cells(looper, 1)
        pack_number = datam.Cells(looper, 2)
       
            If sip_nom <> "" Then
           
baslangic:
yenile_arama_kutu_sayfasir:

  baglan.Get Cbol_arama_linki
 
    arama_kutu_sayfasi = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelTitle']").Text
        If arama_kutu_sayfasi <> "Order Status" Then
            Application.Wait (Now + TimeValue("0:00:03"))
            GoTo yenile_arama_kutu_sayfasir
        End If
       
                baglan.FindElementById("ContentPlaceHolder1_TextBoxCustomerOrderNumber").Clear
                baglan.FindElementById("ContentPlaceHolder1_TextBoxCustomerOrderNumber").SendKeys sip_nom

baglan.FindElementByXPath("//*[@id='RangeDateList']").Click
baglan.FindElementByXPath("//*[@id='RangeDateList']/option[6]").Click

from_aralikbekle:
                    If baglan.FindElementByXPath("//*[@id='fromLabel']").Text = "From" Then
                          baglan.FindElementByXPath("//*[@id='rangeDateInputFrom']").Clear
                          baglan.FindElementByXPath("//*[@id='rangeDateInputFrom']").SendKeys "01.01.2018"
                    Else
                         GoTo from_aralikbekle
                    End If
           
           
to_aralikbekle:
                    If baglan.FindElementByXPath("//*[@id='toLabel']").Text = "To" Then
                        baglan.FindElementByXPath("//*[@id='rangeDateInputTo']").Clear
                        baglan.FindElementByXPath("//*[@id='rangeDateInputTo']").SendKeys Format(Now(), "dd.mm.yyyy")
                    Else
                        GoTo to_aralikbekle
                    End If

End If



On Error Resume Next
ara_tiklat:
    'search butonuna tiklar
       baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_ButtonSearch']").Click
       baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_ButtonSearch']").Click
        Application.Wait (Now + TimeValue("0:00:01"))
          'yeni sayfayi kontrol et yuklendimi
          yeni_sayfa_yazi = ""
             yeni_sayfa_yazi = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelListDocumentsTitle']").Text
                If yeni_sayfa_yazi = "" Then
                    If sayac < 4 Then
                        Application.Wait (Now + TimeValue("0:00:02"))
                        sayac = sayac + 1
                        GoTo ara_tiklat:
                    Else
                        datam.Cells(looper, 15).Value = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelNoResult_DivContainer']/span").Text
                        sayac = 0
                        datam.Cells(looper, 4).Value = "No Result "
                        datam.Cells(looper, 5).Value = "No Result "
                        datam.Cells(looper, 6).Value = "No Result "
                        datam.Cells(looper, 7).Value = "No Result "
                        datam.Cells(looper, 8).Value = "No Result "
                        datam.Cells(looper, 9).Value = "No Result "
                        datam.Cells(looper, 10).Value = "No Result "
                        datam.Cells(looper, 11).Value = "No Result "
                        datam.Cells(looper, 12).Value = "No Result "
                        datam.Cells(looper, 13).Value = "No Result "
                        GoTo sonagit
                    End If
                End If
On Error GoTo 0


        Dim denetim_sonuc_varmi As WebElement
         Set denetim_sonuc_varmi = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LnkExport']")
          If denetim_sonuc_varmi Is Nothing Then
             datam.Cells(looper, 15).Value = "Error"
             GoTo sonagit
         End If

On Error Resume Next
orderid_num = ""
orderid_num = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_DataGridMain']/tbody/tr/td[2]").Text
If orderid_num <> "" Then
    baglan.Get "https://bolservices.it.abb.com/cBOL/OrderDetail?OrderId=" & baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_DataGridMain']/tbody/tr/td[2]").Text & "&Account=&DocBUUnit=&DocSysId="
Else
    datam.Cells(looper, 15).Value = "Error"
    orderid_num = ""
    GoTo sonagit
End If
On Error GoTo 0

'bakiyoruz detaylar sayfasi acilmis mi, acilmamissa donguyu tekrar baslat
If baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelTitleHeader']").Text = "" Then
    If dongu = 1 Or dongu = 0 Then
        dongu = dongu + 1
        GoTo baslangic
    Else
        datam.Cells(looper, 15).Value = "Error"
        GoTo sonagit
    End If
End If
dongu = 0


'order no
If baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelOrderNumber']").Text <> "" Then
    datam.Cells(looper, 4).Value = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelOrderNumber']").Text
Else
    datam.Cells(looper, 4).Value = "No Data Found"
End If



'/html/body/main/div/div[4]/div/div/form/div[8]/div[4]/div[1]/div/div[2]/a


On Error Resume Next
baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_linkDocFlow']").Click
baglan.SwitchToWindowByTitle ("ABB - Common Business OnLine"), 1
Application.Wait (Now + TimeValue("0:00:02"))
baglan.FindElementByXPath("/html/body/main/div/div[4]/div/div/form/div[8]/div[4]/div[1]/div/div[2]/a").Click



'-----------------------------'
''burdan itibaren sizlerin yardimiyla projeyi bitirmek isterim :)
''yazdir butonuna tiklatmam/secmem icin onerilerinize acigim, tesekkurler simdiden



End Sub

Function columnLetterToNumber(colNumData As Range, ColumnLetter As String) As Integer

columnLetterToNumber = 0
For i = 1 To Len(ColumnLetter)
    columnLetterToNumber = columnLetterToNumber * 26 + (Asc(UCase(Mid(ColumnLetter, i, 1))) - 64)
Next

End Function
 
Geri
Üst