数据采集

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 = input("请输入用户名:")
psw = input("请输入密码:")
# 进入登陆界面
driver = webdriver.Edge()
mes =  'MES网址'
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()='配置中心']")))

# 点击配置中心
driver.find_element(By.XPATH, "//p[text()='配置中心']").click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[contains(text(), 'PC端数据采集')]")))

# 点击PC端数据采集
driver.find_element(By.XPATH, "//a[contains(text(), 'PC端数据采集')]").click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[text()='数据采集']")))

# 使用JavaScript点击数据采集链接
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, "iframe3")))
iframe = driver.find_element(By.ID, "iframe3")
driver.switch_to.frame(iframe)

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

# 查找当前文件夹.xlsx文件
excelfiles = [f for f in os.listdir('.') 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.RETURN)
    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']")))