使用Python定時執行一任務,自動登錄某web系統,生成報表,然后發送郵件給指定人員


一、項目需求

       每周從A系統生成一張Excel報表,發送此報表給指定人員,相關人員依據此報表去完成后續的工作。

      項目限制:

          1、無法通過EDI系統交互的方式從后台讀取數據

          2、由於公司網絡環境限制,不能使用SMTP發送郵件,比如,不能通過smtp.163.com發送郵件

二、解決方案

      模擬人工操作,登錄系統,輸入相應查詢條件,生成報表,保存后發送郵件給指定人員。

      采用技術:采用Python

三、關鍵點

     1、使用selenium模擬登錄瀏覽器

          '使用IE瀏覽器

          driver.webdriver.Ie()

          driver.get("http://XXXXX")

         '最大化瀏覽器

          driver.maximize_window()

         '找到登錄賬號的組件名

         elem=driver.find_element_by_name("tbx_loginEmpNo")

         '輸入登錄賬號,假定登錄賬號是AAAAA

         elem.send_keys(u"AAAAA")

        ’找到登錄口令組件

        elem=driver.find_element_by_name("tbx_Password")

       '假定登錄口令是XXXXXX

        elem.send_keys(u"XXXXXX")         

 

        '點擊登錄按鈕

         driver.find_element_by_id("btnSignIn").send_keys(Keys.ENTER)

 

     2、使用pyautogui模擬鍵盤操作,根據日期輸入動態查詢條件

          '鼠標所在位置的(X,Y)坐標的獲得

          print(pyautogui.position())

 

          ‘可以設定鼠標移動到屏幕上任何位置,以(X,Y)坐標表示

          ptautogui.moveTo(x,y,duration=1)

         '模擬鼠標左鍵點擊

         ptautogui.click(x,y)

 

        ’獲得當前日期

        today=datetime.date.today()

        ‘無法直接把today輸入到屏幕上的文本框里,需要轉換成字符串類型

        ‘這里假定查詢從今天往前一周的數據

        sBeginDate=(today-datetime.timedelta(days=7)).strftime('%Y-%m-%d')

        sEndDate=today.strftime('%Y-%m-%d')

 

        '在往屏幕上文本框里輸入日期條件時,先移到指定位置

        pyautogui.moveTo(x,y,duration=1)

        '點鼠標左鍵確定輸入到文本框里

        pyautogui.click(x,y)

        '輸入動態日期

        pyautogui.typewrite(sBeginDate)

        

        這里如果直接在pyautogui.typewrite(today)則會報錯,需要把today轉換成字符串

 

     3、import win32Com.client  as win32

          調用Outlook,發送郵件,需要已具備公司內部郵箱賬號

         參考示例:

         outlook=win32.Dispatch('outlook.application')

         mail=outlook.CreateItem(0)

         receivers=['abc123@163.com;abc234@163.com']

         mail.To=receivers[0]

         mail.Subject='這是一個測試郵件'

         mail.Body="Dear XXX \r\n  XXXX    \r\n  XXXX"

         mail.Attachements.Add(‘C:\\aaa.xlsx’)      '假設要發的附件在C盤根目錄下

         mail.Send()

     

四、定時任務

       定時任務的實現是采用Windows系統里的任務,創建一任務,調用一個簡單的批處理文件,設置成一周調用一次

      文件名: AAA.bat

      內容:

      @echo off

      python C:\work\python\XXXXXX.py

      exit

 

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM