返回列表 上一主題 發帖

[分享] 轉換ie物件語法為Selenium(chrome) ?

本帖最後由 t8899 於 2022-9-25 09:44 編輯

回復 10# singo1232001

請教看網頁原始碼?用什麼方法看,較容易找到標題??
/td /tr 這是一層一層???有無先後次序?如何快速知道要找的table 在第幾個??
找的技巧?

TOP

本帖最後由 singo1232001 於 2022-9-25 10:27 編輯

在你想找的網頁同一個位置
做兩次(按右鍵>檢查)

第一次是開啟 第二次是展開到你的元素

TOP

回復 10# singo1232001
請教我若同時要開第二視窗,要再增加 Set driver = CreateObject("Selenium.ChromeDriver")  這行 為
Set driver2 = CreateObject("Selenium.ChromeDriver")  ???

TOP

回復 12# singo1232001

https://mis.taifex.com.tw/futures/disclaimer
這網頁進入按"接受"怎麼寫?

TOP

本帖最後由 singo1232001 於 2022-10-13 20:14 編輯

回復 13# t8899

F8逐步測試

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

本帖最後由 t8899 於 2022-10-14 06:41 編輯
回復  t8899


    Sub test2()
Set driver = CreateObject("Selenium.ChromeDriver")
driver.Get "h ...
singo1232001 發表於 2022-10-13 20:11

謝謝指導
1.我想加一個 假如不是這個網頁則跳過   (goto)
2.我用 driver.find_element_by_xpath(//*[@id="content"]/main/div[2]/div[2]/button[1].click())
錯誤停留紅色處??

Snap1.jpg (110.06 KB)

Snap1.jpg

TOP

本帖最後由 t8899 於 2022-10-14 06:43 編輯
回復  t8899

F8逐步測試

Sub test()
Set driver = CreateObject("Selenium.ChromeDriver")
driver ...
singo1232001 發表於 2022-10-13 20:07


driver.SwitchToNextWindow
這行的語法可否改成用"視窗的名字"切換? 或是直接對第幾個視窗做動作?

TOP

Sub test()
Set driver = CreateObject("Selenium.ChromeDriver")
driver.Get "http://forum.twbts.com/thread-23777-1-1.html"
w1 = driver.Title
driver.ExecuteScript ("window.open()")
driver.SwitchToNextWindow
driver.Get "https://www.yahoo.com.tw/"
w2 = driver.Title
driver.ExecuteScript ("window.open()")
driver.SwitchToNextWindow
driver.Get "https://www.mobile01.com/"
w3 = driver.Title
driver.Wait 2000
driver.SwitchToWindowByTitle w1
driver.Wait 5000
driver.SwitchToWindowByTitle w2
driver.Wait 5000
driver.SwitchToWindowByTitle w3
driver.Wait 5000
driver.Close
End Sub

TOP

本帖最後由 singo1232001 於 2022-10-15 03:16 編輯

回復 18# t8899

1
判斷網頁 可以用if 判斷式
試著用裡面的 物件存在狀態 or 物件數量 or 物件名稱 or 物件文字 or 網頁Title名稱(可能重複要看個案) 來判斷跳過
可以先下on error resume next 忽略錯誤
以下可供挑選判斷方式
啟用可以用isobject() =true
數量用.count>0
名稱用.attribute
文字用.text
網頁title名稱 用.title
上述文字可以搭配vba的instr like find 這列文字搜索的功能做判斷

2
xpath我不太常用 所以練的不熟 我習慣用tag抓位置 通常很高的高手會用xpath 或者運氣不錯剛好能用(該元素沒有後續才慢慢出現)
主要原因是 有時候 網頁不會一次性跳出來 他會慢慢跳  當然也可以用wait來等
也就是之前說到的狀況 用tag逐步找的方式,這種分解步驟可以慢慢判斷是否元素有出現了 再繼續下一步的判斷

3
印象可以 但不建議 怕多個視窗title重複 看個案使用  
下面是我查到的資料
語法好像是 driver.SwitchToWindowByTitle "Title名稱"     不過我沒實測過
https://stackoverflow.com/questions/52397268/how-do-i-switch-focus-to-a-new-window-using-selenium-vba
(可以下google關鍵字 vba selenium SwitchToNextWindow )找相關資料
通常我還是建議用driver.SwitchToNextWindow跳轉
跳過去如果不要了,也還是要還要用driver.SwitchToPreviousWindow跳回來

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題