使用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
使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员的更多相关文章
- python定时执行方法
1 time.sleep import time for i in range(5): print(i) time.sleep(10) 2 用shed import time import sche ...
- python 奇淫技巧之自动登录 哔哩哔哩
前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱 ...
- python定时执行详解
知识点 1. sched模块,准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度. (1)生成调度器:s = sched.scheduler(time.time,time ...
- 用Golang让自己的电脑自动登录“上网管理”系统
用Golang让自己的电脑自动登录 1.缘起 大天朝的网络一般都是只对某些人开放的.上行下效,同样的措施也作用在我们的教育网上.我想不出来,为什么很多领导的总有这样的恶趣味(如果做的到,他们恨不得监控 ...
- 【转】【Python】Python3爬虫实现自动登录、签到
工具:Fiddler 首先下载安装Fiddler,这个工具是用来监听网络请求,有助于你分析请求链接和参数. 打开目标网站:http://www.17sucai.com/,然后点击登录 好了,先别急着登 ...
- Python案例之QQ空间自动登录程序实现
不多说,直接上干货! 工具选择: 电脑系统:win7,32 位,下面第二部安装SetupTools时注意系统版本要求: Python: 2.7.11, 相信只要是2.7的就可以实现: Seleniu ...
- Python定时执行脚本
最近测试hbase,老发现服务挂掉,自己不能及时发现,想了想,写了个脚本,让脚本每个小时执行一次,以便检测是否有服务挂掉,如果有服务挂掉,及时启动 import os import datetime ...
- python+selenium+webdriver+BeautifulSoup实现自动登录
from selenium import webdriverimport timefrom bs4 import BeautifulSoupfrom urllib import requestimpo ...
- 用python实现自动化登录禅道系统 设置定时器自动执行脚本
由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...
随机推荐
- C# 自定义exe引用的dll路径
MSDN原文:https://msdn.microsoft.com/library/twy1dw1e(v=vs.100).aspx <runtime> 的 <assemblyBind ...
- LeetCode IPO
原题链接在这里:https://leetcode.com/problems/ipo/description/ 题目: Suppose LeetCode will start its IPO soon. ...
- xcomponent web 跨域组件介绍
1. 项目地址: https://github.com/krakenjs/xcomponent 2. 支持的特性 a. Render an iframe or popup on a different ...
- CLR值类型和引用类型
知识点:引用类型.值类型.装箱.拆箱 CLR支持两种类型:引用类型和值类型.引用类型在堆上分配内存,值类型在线程栈上分配内存.值类型与引用类型如下所示: 值类型对象有两种表示形式:未装箱和已装箱.将一 ...
- 3 循环语句——《Swift3.0从入门到出家》
3 循环语句 当一段代码被多次重复利用的使用我们就使用循环 swift提供了三种形式的循环语句 1.while 循环 2.repeat — while 循环 3.for — in 循环 while 循 ...
- 两种方式创建Maven项目【方式一】
经常使用maven进行项目的管理,今天整理两种方式创建maven项目及创建过程中碰到的问题怎么解决: 方式一: 1.新建maven项目,点击下一步. 2.勾选Create a simple proje ...
- Java 虚拟机-垃圾收集算法
本文主要介绍Java虚拟机的垃圾回收算法. 一.概述 二.标记-清除算法 Mark-Sweep.如同名字,该算法分两步: 标记:标记处需要回收的对象 清除:标记完成后统一回收被标记的对象. 缺点: 效 ...
- 【ecmall】解决无法上传店铺logo和banner照片问题 (转)
问题描述:在ecmall个人用户登录,点击用户中心-店铺设置-更换店标,上传一个jpg图像(图像符合规范)后,不能预览,而且在页面底部点击提交后没有上传成功.banner店铺条幅也是一样的情况,还有下 ...
- 把OnDraw和OnPaint弄清楚(转贴)
OnDraw()和OnPaint()兄弟 经常有朋友问雷神这样的问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同? 雷神 ...
- week01—绪论
一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算: 构造有理数T,元素e1,e2分别被赋以分子.分母值 销 ...