公司对工单处理的及时性有一定的考察,但工单系统负责人员暂未计划在系统中开发“有工单时发出声音通知”的功能(主要是担心办公室通知声音不停地此起彼伏给大家造成困扰)。于是,我就自己写了这样一个小 Python 程序,每天开机自动运行,登录系统并每隔5分钟检查是否有新的待办任务,如果有新的待办,则蜂鸣通知。

本文已经对相关敏感信息进行模糊处理

# -*- coding: utf-8 -*-
"""
Created on Mon Jan  9 09:32:31 2023

@author: xuwang
"""

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import requests
import time
import re
import win32com.client
import winsound
from bs4 import BeautifulSoup

browser = webdriver.Ie()
browser.get('http://tl.example.com/login.asp')
# 调用IE打开登录网址,如果登录代码不在单独的网页,而是在 iframe 框架里,则需要打开网页后,切换到对应的 frame 中
# browser.switch_to_frame('frame的id')


# 取得本次访问的 cookie
cookiestr = browser.get_cookies()
# 取到的串类似这样: [{'domain': 'tl.example.com', 'httpOnly': False, 'name': 'ASPSESSIONIDQSASDDAQ', 'path': '//', 'secure': False, 'value': 'GGDNFBLBNIKJCLACOEEKPPAO'}]
# headers 中的 Cookie 项类似这样: Cookie: ASPSESSIONIDQSASDDAQ=GGDNFBLBNIKJCLACOEEKPPAO,通过下面两条指令从上面的输出中将相关内容取出来
cookiekey = cookiestr[0]['name']
cookieval = cookiestr[0]['value']
headers = {
    'Accept': 'image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-Hans-CN, zh-Hans; q=0.5',
    'Connection': 'Keep-Alive',
    'Cookie': cookiekey+'='+cookieval,
    'Host': 'tl.example.com',
    'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)'    
}

# 输入用户名和密码并点击登录,如果有验证码,则还需要识别并输入验证码
browser.find_element(By.ID, 'user_id').send_keys('1001')
browser.find_element(By.ID, 'user_id').send_keys(Keys.TAB)
browser.find_element(By.ID, 'user_pwd').send_keys('123456')
browser.find_element(By.ID, 'button').click()

while True:
    # 请求显示有待办工单数量的页面
    url="http://tl.example.com/managepartmid.asp?cxtype=1"
    response=requests.get(url,headers=headers)
    #response=requests.get(url,headers=headers)
    data=response.text
    soup=BeautifulSoup(data,"html.parser")

    # 将待办工单数值取出来
    mgsy=soup.select("#dbnum")[0]
    mgsy=str(mgsy)
    mgsy=re.sub('[^0-9]',"",mgsy)
    mgsy=float(mgsy)

    # 如果数值大于0,则蜂鸣告警
    if mgsy > 0:
        print(mgsy)
        winsound.Beep(2015,2000)

    # 睡眠5分钟,然后再次循环(检查是否有待办工单)
    time.sleep(300)
-- By 许望(RHCA、OCM、VCP)
最后修改:2023 年 11 月 07 日 11 : 35 AM
如果觉得我的文章对你有用,请随意赞赏