Good good study, day day up!

数据采集

Sat 01 March 2025 selenium /
import os
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

user = ""
psw = ""
# 进入登陆界面
driver = webdriver.Edge()
mes =  'https://mom.hiway.com/mc/fp/FpAction_forFpLogin.ms'
driver.get(mes)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "userDto_loginName")))

# 输入用户名
driver.find_element(By.ID,"userDto_loginName").send_keys(user)

# 输入密码
driver.find_element(By.ID,"keeper").send_keys(psw)

# 选择账套 - 添加等待确保下拉框加载
driver.find_element(By.ID, 'mcDataAuthB').click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='武汉海微科技股份有限公司']")))
option = driver.find_element(By.XPATH, "//div[text()='武汉海微科技股份有限公司']")
option.click()

# 点击登陆按钮
driver.find_element(By.ID, "loginButton").click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//p[text()='配置中心']")))

# 直接等待数据采集链接加载(前提是页面已加载到包含该链接的状态)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//a[text()='数据采集']"))
)
data_collection_link = driver.find_element(By.XPATH, "//a[text()='数据采集']")
driver.execute_script("arguments[0].click();", data_collection_link)

# 进入数据采集框架
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "iframe2")))
iframe = driver.find_element(By.ID, "iframe2")
driver.switch_to.frame(iframe)

input("请设置指令相关信息,按Enter键继续\n")

# 查找当前文件夹.xlsx文件
path = os.getcwd()
files = os.listdir(path)
excelfiles = [f for f in files if not f.startswith(("~$")) and f.endswith((".xlsx"))]

# 打开.xlsx文件默认sheet
wb = pd.read_excel(excelfiles[0])

# 定义查找函数
def mes_click(sn):
    v = driver.find_element(By.XPATH, "//input[@id='input_box']")
    v.clear()
    v.send_keys(sn)
    v.send_keys(Keys.ENTER)
    print(f'{xh}{sn}已录入')

# 循环录入信息
for index,row in wb.iterrows():
    xh = row["序号"]
    sn = row["物料SN"]
    mes_click(sn)
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='input_box']")))
    input("按Enter键继续")

on the top