您的位置:首页 > 运维架构 > 网站架构

selenium+pillow实现网站定点截图并插入邮件发送

2015-08-10 22:45 891 查看
#coding: utf-8

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.image import MIMEImage

import time,os

import selenium.webdriver

from PIL import Image

#打开目标地址

driver=selenium.webdriver.Firefox()

driver.get("http://www.51testing.com/html/index.html")

#找到目标元素

photo=driver.find_element_by_xpath(".//*[@id='pagetitle']/div[1]/a/img")

time.sleep(3)

#获取元素所处的位置,以x,y标识元素左上定点的位置

location=photo.location

print (location)

#获取元素的高和宽,以height标识高,以width标识宽

size=photo.size

print (size)

#截取全屏图像并保存到本地路径

driver.save_screenshot("photo.png")

#打开所截取的图像

im = Image.open("photo.png")

#定义二次截图的位置及大小

left=location['x']

top=location['y']

right=left+size['width']

bottom=location['y']+size["height"]

#二次截图并替换原图像

im = im.crop((left,top,right,bottom))

im.save("photo.png")

driver.close()

#定义邮件正文内容,由一个html文档构成

def mailWrite():

    #以img标签标识正文区html中的图像

    head='<html><body><img src='

    #以cid标注文件在附件中可以找到,如不写,邮件将不会在附件中查找该文件,则会出现不显示图像的情况

    body='cid:photo'

    tail="></img></body></html>"   

    #将内容拼接成完整的HTML文档

    mail=head+body+tail

    return mail

#发送邮件

def mailSend(mail):

    sender = '***@***.net'

#设置接收人

    receiver = '***@***.net'

#设置邮件主题

    subject = 'Test mail,ignore please!'

#设置发件服务器,即smtp服务器

    smtpserver = 'smtp.***.net'

#设置登陆名称

    username = '***@***.net'

#设置登陆密码

    password = '******'

#创建MIMEMultipart对象,采用related定义内嵌资源的邮件体

    msg = MIMEMultipart('related')

#输入邮件主题

    msg['Subject'] = subject

#将html文档内容插入邮件正文区

    msgText = MIMEText(mail,'html','utf-8')

    msg.attach(msgText)

#以二进制形式打开图片文件,并插入附件区,以备正文区检索本地文件而正确显示在正文区

    fp = open('photo.png', 'rb')

    msgImage = MIMEImage(fp.read())

    fp.close()

    msgImage.add_header('Content-ID','photo')

    msg.attach(msgImage)

#调用邮件发送方法

    smtp = smtplib.SMTP()

#设置连接发件服务器

    smtp.connect('smtp.***.net')

#输入用户名,密码,登陆服务器

    smtp.login(username, password)

#发送邮件

    smtp.sendmail(sender, receiver, msg.as_string())

#退出登陆并关闭与发件服务器的连接

    smtp.quit()

   

#入口函数,配置文件地址和文件名

def main():

    mail=mailWrite()

    mailSend(mail)

    print("mailed")

#调用执行main函数

if __name__=="__main__":

    main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 邮件 selenium