使用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

 

      

转载于:https://www.cnblogs.com/SH170706/p/9767160.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值