ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[¤À¨É] Âà´«ieª«¥ó»yªk¬°Selenium(chrome) ?

¦^´_ 1# t8899


Sub test()
Set driver = CreateObject("Selenium.ChromeDriver")
driver.get "https://mis.twse.com.tw/stock/group.jsp?type=fixed&ex=tse&ind=TIDX#STATISTICS"  '¦pªG¥d¦b³o¸Ì ÂsÄý¾¹¨S¶}¦¨ ­nª`·Nchromedriverª©¥»¬O§_§ó·s
Set tb = driver.findelementsbytag("table")
Cells.ClearContents
For Each Z In tb
r = Cells(Rows.Count, 1).End(3).Row + 3
Z.astable.toexcel Cells(r, 1)
Next
End Sub

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-9-24 08:54 ½s¿è

¦^´_ 6# t8899


    Sub test2()
Cells.ClearContents

Set driver = CreateObject("Selenium.ChromeDriver")
'driver.AddArgument ("headless") 'µLÀYµøµ¡
  'driver.Wait 1500 '¨S¦³¥[µ¥«Ý1.5¬í ·|¤Ö¤@¦¸ºô­¶§¹¦¨°±¹y ¸ê®Æ¨Ó¤£¤Îªñ¨Ó ¬í¼Æ¨Ì·Ó¹q¸£®Ä¯àºô¸ô³t«×½Õ¾ã
    driver.get "https://mis.twse.com.tw/stock/group.jsp?type=fixed&ex=tse&ind=TIDX#STATISTICS"

Set tbl6 = driver.findelementsbytag("table")(6)    '<table> ²Ä¤»­Ótable
                  r = Cells(Rows.Count, 1).End(3).Row + 1
                     Cells(r, 1) = tbl6.findelementsbytag("th")(2).Text '<th> "¾ãÅ饫³õªº¼ÐÃD"

  Set tby1 = tbl6.findelementsbytag("tbody")(1)      '<tbody> ²Ä¤@­Ótbody
    Set tr = tby1.findelementsbytag("tr")          '§ä¨ì¥þ³¡tr«á  ¨C­Ótrªº²Ä¤G­Ótd

       For Each Z In tr
           r = Cells(Rows.Count, 1).End(3).Row + 1
          Cells(r, 1) = Z.findelementsbytag("td")(2).Text   'td²Ä¤G
       Next
End Sub

¾á¤ß­ìpo¬Ý¤£À´¶¶§Ç (¥i¥H¹ï·ÓµÛºô­¶ªº¼ÐÅÒ¬Ý)
¥t¥~¤£¥u³oºØ¼ÐÅÒ¦¡ªº¬d§ä
¤]¦³¨ä¥LºØÃþªº¤èªk
¥u¬O³oºØ¤ñ¸û¤£®e©öÅý·s¤â¦bºô­¶¤¤°g¸ô
·í§A½m±o«Ü¯Â¼ôªº®É­Ô,¥i¥H¹³5¼Óq¤j¨º¼Ë³sµÛ¼g¤ñ¸û§Ö

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-9-24 13:37 ½s¿è

Sub ¤À¸Ñ¨BÆJª©()
Cells.ClearContents
Set driver = CreateObject("Selenium.ChromeDriver")
    driver.AddArgument ("headless") 'µLÀYµøµ¡
    driver.Wait 1500
    driver.get "https://mis.twse.com.tw/stock/group.jsp?type=fixed&ex=tse&ind=TIDX#STATISTICS"

Set tbl6 = driver.findelementsbytag("table")(6)
  Set tby1 = tbl6.findelementsbytag("tbody")(1)
    Set tr2 = tby1.findelementsbytag("tr")(2)
      Set td2 = tr2.findelementsbytag("td")(3)
        Cells(1, 1) = td2.Text
End Sub


Sub ¤@®ð¨þ¦¨ª©()
Cells.ClearContents
Set driver = CreateObject("Selenium.ChromeDriver")
    driver.AddArgument ("headless") 'µLÀYµøµ¡
    driver.Wait 1500
    driver.get "https://mis.twse.com.tw/stock/group.jsp?type=fixed&ex=tse&ind=TIDX#STATISTICS"

Cells(1, 1) = driver.findelementsbytag("table")(6). _
               findelementsbytag("tbody")(1). _
               findelementsbytag("tr")(2). _
               findelementsbytag("td")(3). _
               Text
End Sub

'¨âºØ¼gªk³£¤@¼Ë







'¦pªG­n¥[¤W§¹¥þ¦Û°Ê§ó·s
Sub Chrome§ó·s®É¦Û°Ê§ó·s_and_¤À¸Ñ¨BÆJª©()

Do
    On Error GoTo 0
    On Error Resume Next
    Set driver = CreateObject("Selenium.ChromeDriver")
        driver.AddArgument ("headless")
    Err = 0
    driver.Start
    If Err <> 0 Then
      If Exit5 > 5 Then Exit Sub  '­Y°õ¦æ¶W¹L5¦¸´N¤£¶]¤F
      driver.Quit
      Set driver = Nothing
      Exit5 = Exit5 + 1
      Call updataSelenium
    End If
Loop Until Err = 0
Set driver = Nothing




Cells.ClearContents
Set driver = CreateObject("Selenium.ChromeDriver")
    driver.AddArgument ("headless") 'µLÀYµøµ¡
    driver.Wait 1500
    driver.get "https://mis.twse.com.tw/stock/group.jsp?type=fixed&ex=tse&ind=TIDX#STATISTICS"

Cells(1, 1) = driver.findelementsbytag("table")(6). _
               findelementsbytag("tbody")(1). _
               findelementsbytag("tr")(2). _
               findelementsbytag("td")(3). _
               Text
End Sub

Sub updataSelenium()  '¦pªG¤¤³~´N¸õÂ÷ ¥i¯à¬OÀɮצì¸m­n­«·s½T»{ ©ÎªÌ ª©¥»ÀɮרS§R°£¾É­Pµ{§ÇµLªk°õ¦æ ¤]¥i¯à¬OÀ£ÁYÀɸÑÀ£¹Lµ{¥X°ÝÃD ¤]¥i¯à¬O¤U¸üÀÉ®×¥X°ÝÃD ¥D­nF8³v¨B¬Ý­þ¬q¸õÂ÷
'§ä¨ìchromedriverªºÀɮצì¸m ¦³ªº¹q¸£¦ì¸m¤£¦P ³q±`¬O³o¨â­Ó¦ì¸m¨ä¤@
'½T»{chromedriver¥¿½TªºÀɮ׸ô®| »P¥¿½Tªº¸ê®Æ§¨¸ô®|
path1 = "C:\Users\" & Environ$("username") & "\AppData\Local\SeleniumBasic\Chromedriver.exe"
path2 = "C:\Program Files\SeleniumBasic\chromedriver.exe"
If Dir(path1) <> "" Then TempDrvFile = path1
If Dir(path2) <> "" Then TempDrvFile = path2
foler = Left(TempDrvFile, InStrRev(TempDrvFile, "\"))

'¬d§ä¹q¸£·í«eªºgoogleª©¥»¸¹
Set objHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")  'Get chrome version
chrversion = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon\version")
dotsarr = Split(chrversion, ".")
leftchrver = dotsarr(0) & dotsarr(1)

'¬d§ä¹q¸£·í«eªºchromeDriverª©¥»¸¹
Set oShell = CreateObject("wscript.shell")
errcode = oShell.Exec(TempDrvFile & " --version").StdOut.ReadAll
verarr = Split(errcode, " ")
chrdrv = verarr(1)
dotsarr2 = Split(chrdrv, ".")
leftchrdrv = dotsarr2(0) & dotsarr2(1)
If leftchrver = leftchrdrv Then Exit Sub

'­Y¤£²Å ,«h¤W©xºô¬d³Ì·schromeDriverª©¥»¸¹
Url = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_" & dotsarr(0)
Call objHttp.Open("GET", Url, False)
Call objHttp.Send("")
version_number = objHttp.responseText
dotsarr3 = Split(version_number, ".")
leftversion_no = dotsarr3(0) & dotsarr3(1)
download_url = "https://chromedriver.storage.googleapis.com/" + version_number + "/chromedriver_win32.zip"
    '§Q¥Î³Ì·sªºchromeDriverª©¥»¸¹ §ä¨ì¤U¸ü¸ô®|
    Call objHttp.Open("GET", download_url, False)
    Call objHttp.Send("")
        
        '¤U¸üÀÉ®×,¨Ã§ó¥¿¦¨À£ÁYÀÉ°ÆÀɦW
        Set fileStream = CreateObject("ADODB.Stream")
        With fileStream
            .Open
            .Type = 1 'adTypeBinary
            .Write objHttp.responseBody
            .Position = 0
            .SaveToFile foler & "chromedriver.zip", 2
            .Close
        End With
        
        '¸ÑÀ£ÁY(¸ÑÀ£«eµ{§Ç·|¥ý§R±¼Âªº)
        On Error GoTo 0
        Set oApp = CreateObject("Shell.Application")
        If Dir(TempDrvFile) <> "" Then Kill TempDrvFile
        oApp.Namespace(foler).CopyHere _
            oApp.Namespace(foler & "chromedriver.zip").items
End Sub

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-9-24 14:51 ½s¿è

¦^´_ 9# t8899


¹ï
­Y§A¤£·QÃö³¬ ¥i¥H³o¼Ë¼g

Dim driver '<--³o­n¸m³» ³Ì³»³¡ ¦b³o¤§¤W¤£¯à¦³¥ô¦ó¦r
Sub ¤£Ãö³¬¤À¸Ñ¨BÆJª©()
Cells.ClearContents
Set driver = CreateObject("Selenium.ChromeDriver")
    'driver.AddArgument ("headless") 'µLÀYµøµ¡
    driver.Wait 1500
    driver.get "https://mis.twse.com.tw/stock/group.jsp?type=fixed&ex=tse&ind=TIDX#STATISTICS"

Set tbl6 = driver.findelementsbytag("table")(6)
  Set tby1 = tbl6.findelementsbytag("tbody")(1)
    Set tr2 = tby1.findelementsbytag("tr")(2)
      Set td2 = tr2.findelementsbytag("td")(3)
        Cells(1, 1) = td2.Text
End Sub

Sub Ãö³¬¤lµ{§Ç()
On Error Resume Next
If IsObject(driver) Then
driver.Quit
Set driver = Nothing
End If
End Sub

§Ñ¤F»¡©ú
¤À¸Ñ¨BÆJª©¦³­Ó¦n³B
´N¬O¥i¥H¦h°µ if isobject  + do loop+wait §PÂ_
¥t¥~¤£¥u¥i¥H§PÂ_¤¸¯À¦s¦b ¤]¥i¥H§PÂ_­È¬O§_¬°ªÅ ©ÎªÌ§PÂ_ª«¥ó¼Æ¶q¬O§_>1
ÁקK¦³¨Çºô­¶·|ºCºC¤~¥X²{¸ê®Æ(³oÃþºô­¶«Ü±`¨£ ¨Ò¦pyahoo)

¤£¹LÁÙ¦³¥t¥~¨âºØÃþ«¬¤]­n¤p¤ß
¤@ºØ¬O ¶W¥X¥iµø½d³ò¥~ ·|§ä¤£¨ì¤¸¯À(³oºØºô­¶¤£¦h)
¤@ºØ¬O ­n¤U©Ôºô­¶ ¤~·|¸õ¥X·s¤¸¯À(¦pFB)
³oÃþºô­¶´N­n¦hªáÂI¥\¤Ò
³q±`°ê¥~½×¾Â³£¦³±Ð §V¤O¬d ¬dªº¨ì

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-9-25 10:27 ½s¿è

¦b§A·Q§äªººô­¶¦P¤@­Ó¦ì¸m
°µ¨â¦¸¡]«ö¥kÁä>Àˬd¡^

²Ä¤@¦¸¬O¶}±Ò ²Ä¤G¦¸¬O®i¶}¨ì§Aªº¤¸¯À

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-10-13 20:14 ½s¿è

¦^´_ 13# t8899

F8³v¨B´ú¸Õ

Sub test()
Set driver = CreateObject("Selenium.ChromeDriver")
driver.Get "https://www.google.com.tw/"
driver.ExecuteScript ("window.open()")
driver.SwitchToNextWindow
driver.Get "https://www.yahoo.com.tw/"
driver.Wait 1000
driver.Close
driver.Wait 1000
driver.SwitchToPreviousWindow
driver.Close
End Sub

TOP

¦^´_ 14# t8899


    Sub test2()
Set driver = CreateObject("Selenium.ChromeDriver")
driver.Get "https://mis.taifex.com.tw/futures/disclaimer/"
Set btnS = driver.findelementsbytag("button")
Debug.Print btnS(3).Text
btnS(3).Click
End Sub

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-10-15 03:16 ½s¿è

¦^´_ 18# t8899

1
§PÂ_ºô­¶ ¥i¥H¥Îif §PÂ_¦¡
¸ÕµÛ¥Î¸Ì­±ªº ª«¥ó¦s¦bª¬ºA or ª«¥ó¼Æ¶q or ª«¥ó¦WºÙ or ª«¥ó¤å¦r or ºô­¶Title¦WºÙ(¥i¯à­«½Æ­n¬Ý­Ó®×) ¨Ó§PÂ_¸õ¹L
¥i¥H¥ý¤Uon error resume next ©¿²¤¿ù»~
¥H¤U¥i¨Ñ¬D¿ï§PÂ_¤è¦¡
±Ò¥Î¥i¥H¥Îisobject() =true
¼Æ¶q¥Î.count>0
¦WºÙ¥Î.attribute
¤å¦r¥Î.text
ºô­¶title¦WºÙ ¥Î.title
¤W­z¤å¦r¥i¥H·f°tvbaªºinstr like find ³o¦C¤å¦r·j¯Áªº¥\¯à°µ§PÂ_

2
xpath§Ú¤£¤Ó±`¥Î ©Ò¥H½mªº¤£¼ô §Ú²ßºD¥Îtag§ì¦ì¸m ³q±`«Ü°ªªº°ª¤â·|¥Îxpath ©ÎªÌ¹B®ð¤£¿ù­è¦n¯à¥Î(¸Ó¤¸¯À¨S¦³«áÄò¤~ºCºC¥X²{)
¥D­n­ì¦]¬O ¦³®É­Ô ºô­¶¤£·|¤@¦¸©Ê¸õ¥X¨Ó ¥L·|ºCºC¸õ  ·íµM¤]¥i¥H¥Îwait¨Óµ¥
¤]´N¬O¤§«e»¡¨ìªºª¬ªp ¥Îtag³v¨B§äªº¤è¦¡,³oºØ¤À¸Ñ¨BÆJ¥i¥HºCºC§PÂ_¬O§_¤¸¯À¦³¥X²{¤F ¦AÄ~Äò¤U¤@¨Bªº§PÂ_

3
¦L¶H¥i¥H ¦ý¤£«Øij ©È¦h­Óµøµ¡title­«½Æ ¬Ý­Ó®×¨Ï¥Î  
¤U­±¬O§Ú¬d¨ìªº¸ê®Æ
»yªk¦n¹³¬O driver.SwitchToWindowByTitle "Title¦WºÙ"     ¤£¹L§Ú¨S¹ê´ú¹L
https://stackoverflow.com/questions/52397268/how-do-i-switch-focus-to-a-new-window-using-selenium-vba
(¥i¥H¤UgoogleÃöÁä¦r vba selenium SwitchToNextWindow )§ä¬ÛÃö¸ê®Æ
³q±`§ÚÁÙ¬O«Øij¥Îdriver.SwitchToNextWindow¸õÂà
¸õ¹L¥h¦pªG¤£­n¤F,¤]ÁÙ¬O­nÁÙ­n¥Îdriver.SwitchToPreviousWindow¸õ¦^¨Ó

TOP

¦^´_ 24# t8899

³Ì¤W­±°£¤F
publice driver as object
¦h¥[¤@¦æ
public w1,w2


w1 ¸òw2 ¨S¸ò¹L¥h
¥Ø«e¬Ý¨Ó¬O ""

TOP

¥»©«³Ì«á¥Ñ singo1232001 ©ó 2022-10-16 06:29 ½s¿è

¸É¥R»¡©ú¤@¤U

¥Îpublic ¬O¥þ³¡ªº¼Ò²Õmodule ¥]¬Aªí³æuserform ³£·|¦Y¨ì³á
   
¦pªG¨ä¥L¼Ò²Õ¤]¦³¥Î¨ì ´N¥Îpublic

¦pªG¤£·Qµ¹¨ä¥L¼Ò²ÕModule ªí³æuserform¥Îªº¸Ü

§ï¥Î
dim driver as object
dim w1,w2

¥Îdim ªº¸Ü ¦P¼Ò²Õ¤ºªº©Ò¦³sub³£¯à¥Î ¨ä¥L¼Ò²Õ¤ºªº¥Î¤£¤F

¦]¬°©È¦b¨ä¥L¼Ò²Õªºsub¤]¦³¥Î¨ìw1,w2 ¨ì®É­Ô½Ä¬ð

TOP

        ÀR«ä¦Û¦b : ¨C¤ÑµL©Ò¨Æ¨Æ¡A¬O¤H¥Íªº®ø¶OªÌ¡A¿n·¥¡B¦³¥Î¤~¬O¤H¥Íªº³Ð³yªÌ¡C
ªð¦^¦Cªí ¤W¤@¥DÃD