2024年10月28日 星期一

用 python + selenium 登入設備抓資料

Reference:
selenium的frame和iframe定位、切入及切出
 
情境:
用 python 自動登入設備抓韌體版本,提供後續風險管理,安排韌體更新期程。
 
實作:
以 Draytek Vigor為例,用 python + selenium 登入設備抓韌體版本。
 
●程式碼
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time

# 設置 Chrome 瀏覽器選項,關閉通知
option = webdriver.ChromeOptions()

# 初始化 Chrome 瀏覽器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=option)

# 打開網頁,按進階,繼續前往網站
driver.get("https://device_IP/")
driver.find_element(By.CSS_SELECTOR, 'button[id="details-button"]').click()
driver.find_element(By.CSS_SELECTOR, '#proceed-link').click()

# 輸入帳號和密碼,並點擊登入按鈕
account = 'user'  # 替換為你的帳號
password = 'pass'      # 替換為你的密碼

driver.find_element(By.CSS_SELECTOR, 'input[name="u5ern4me"]').send_keys(account)
driver.find_element(By.CSS_SELECTOR, 'input[name="pa55w0rd"]').send_keys(password)
driver.find_element(By.CSS_SELECTOR, 'input[name="btnOk"]').click()

time.sleep(10)

# 切換到 frame "main"
main = driver.find_element(By.NAME, 'main')
driver.switch_to.frame(main)
# 抓取table資料
getcontext = driver.find_element(By.XPATH, '/html/body/div/div[3]/div[1]/table')
print(getcontext.text)
 
●使用的工具
VScode 安裝 python, python debugger

安裝 python 套件 selenium (指令 pip install selenium)

測試執行狀況

●找出需要的點位
如果沒有 name, id,可以使用XPATH

 

●這個網頁用frame,所以要多一個 切換到 frame 的步驟,否則會說找不到元件。
 
2024/10/30 update:
Python 的 selenium 时,报如下错误SSL error code 1, net_error -101
在 option 下增加一行
option.add_experimental_option('excludeSwitches', ['enable-logging'])
 

沒有留言:

張貼留言