一、项目需求

每周从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

使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员的更多相关文章

  1. python定时执行方法

    1  time.sleep import time for i in range(5): print(i) time.sleep(10) 2 用shed import time import sche ...

  2. python 奇淫技巧之自动登录 哔哩哔哩

    前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱 ...

  3. python定时执行详解

    知识点 1. sched模块,准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度. (1)生成调度器:s = sched.scheduler(time.time,time ...

  4. 用Golang让自己的电脑自动登录“上网管理”系统

    用Golang让自己的电脑自动登录 1.缘起 大天朝的网络一般都是只对某些人开放的.上行下效,同样的措施也作用在我们的教育网上.我想不出来,为什么很多领导的总有这样的恶趣味(如果做的到,他们恨不得监控 ...

  5. 【转】【Python】Python3爬虫实现自动登录、签到

    工具:Fiddler 首先下载安装Fiddler,这个工具是用来监听网络请求,有助于你分析请求链接和参数. 打开目标网站:http://www.17sucai.com/,然后点击登录 好了,先别急着登 ...

  6. Python案例之QQ空间自动登录程序实现

    不多说,直接上干货! 工具选择: 电脑系统:win7,32 位,下面第二部安装SetupTools时注意系统版本要求: Python: 2.7.11,  相信只要是2.7的就可以实现: Seleniu ...

  7. Python定时执行脚本

    最近测试hbase,老发现服务挂掉,自己不能及时发现,想了想,写了个脚本,让脚本每个小时执行一次,以便检测是否有服务挂掉,如果有服务挂掉,及时启动 import os import datetime ...

  8. python+selenium+webdriver+BeautifulSoup实现自动登录

    from selenium import webdriverimport timefrom bs4 import BeautifulSoupfrom urllib import requestimpo ...

  9. 用python实现自动化登录禅道系统 设置定时器自动执行脚本

    由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...

随机推荐

  1. 21天学通C++_Day1

    被阿里实习生的第一轮电话面试刷掉以后,幡然醒悟,发现以前学习的C++基础一点都不扎实.为了把基础打扎实,重新学习一遍:为了让自己不放弃,也顺便可以把当天学到的东西记录下来,开始了写博客. 学习书籍:& ...

  2. PS基础教程[7]如何为照片瘦身

    有没有对自己的身材有所抱怨,有没有想过让自己的照片便得苗条一些,其实只有你想不到的,没有我们做不到的,PS中可以很简单的将我们的身体进行美化瘦身,本次经验我们就来学习一下简单的操作. 方法 1.打卡P ...

  3. vue前端开发那些事——vue开发遇到的问题

    vue web开发并不是孤立的.它需要众多插件的配合以及其它js框架的支持.本篇想把vue web开发的一些问题,拿出来讨论下.  1.web界面采用哪个UI框架?项目中引用了layui框架.引入框架 ...

  4. 剑指offer-第六章面试中的各项能力(数字在排序数组中出现的次数)

    题目:统计一个数字在排序数组中出现的次数. 思路:采用二分查找,找到该数字在数组中第一次出现的位置,然后再找到组后一个出现的位置.两者做减法运算再加1.时间复杂度为O(logn) Java代码: // ...

  5. Git学习资源收集汇总

    伴随着知乎上一个问题:GitHub 是怎么火起来的?被顶起200+的回答说到:Github不是突然火起来的,在Ruby社区Github其实从一开始就很流行,我们2009年搞Ruby大会就邀请了Gith ...

  6. SQL Server临时表的使用方案

      文章来源:http://www.codesky.net/article/201007/145241.html 我们今天是要和大家一起讨论的是SQL Server临时表的实用大全,如果你对SQL S ...

  7. matlab数据流仿真和时间流仿真

    simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要. 所谓基於数据流的仿 ...

  8. fn project 扩展

    目前支持的扩展方式   Listeners - listen to API events such as a route getting updated and react accordingly. ...

  9. bzoj 2784 时间流逝 —— 树上高斯消元

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2784 其实转移是一棵树,从根到一个点表示一种能量圈状态,当能量值大于 T 是停止,也就是成为 ...

  10. 日志jar包冲突报错:Class path contains multiple SLF4J bindings

    问题现象:tomcat启动卡死,报错日志如下: 十一月 07, 2017 8:35:45 下午 org.apache.catalina.core.ApplicationContext log 信息: ...