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']")))