码迷,mamicode.com
首页 > 编程语言 > 详细

selenium-python问题日记

时间:2018-07-17 19:53:15      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:pre   app   span   转义字符   filename   isp   code   ati   user   

今天在学习selenium时遇到了两个问题,在这里记录一下;

使用unittest框架组织了测试用例后,拓展一下功能就成了我最想做的事情, 所以决定添加发邮件功能。

使用python自带的smtplib可以轻松的完成发邮件;

具体使用方法详见:

菜鸟教程——邮件教程

在编码过程发现的问题如下:

一、同时发送邮件和正文的问题

教程中没有将同时发送正文和邮件,后来通过看源码发现MIMEMultipart()类可以通过attach方法加载你所构造的参数到一个list中

在此将自己的代码发出来供大家参考,轻拍

import smtplib
from email.mime.text import MIMEText
#邮件正文
from email.header import Header
#邮件的标题
from email.mime.multipart import MIMEMultipart
#邮件附件

#创建一个发送邮件类
class send_email():

    def __init__(self,sender ="xxxxxxxxxxx@xxxx.cn",receiver ="xxxxxxxxxx@xx.com",
        subject = Python email test,smtpserver = smtp.qiye.163.com,username = xxxxxxxxxxx@xxxx.cn,
        password = xxxxxxxxxxx):
        self.sender = sender
        self.receiver = receiver
        self.subject = subject
        self.smtpserver = smtpserver
        self.username = username
        self.password = password

    def send(self,Html_zhengwen_url ="",Html_fujian_url =""):

        ‘‘‘ Html_fujian_url:是邮件正文的本地地址‘‘‘    

        ‘‘‘ Html_fujian_url:是邮件附件的本地地址‘‘‘  
        """下面是创建Html正文,测试通过"""  
        with open(Html_zhengwen_url,r,encoding=utf-8) as e :     #HTML邮件正文
            Html_msg =‘‘.join(e.readlines())
        att2 = MIMEText(Html_msg,html,utf-8) #编写html类型的邮件正文
        att2[Subject] = Header(self.subject, utf-8)

        # #创建一个smtp实例
        smtp = smtplib.SMTP()    

        """下面是创建附件,测试通过"""  
        #创建一个附件实例
        msg2 = MIMEMultipart()

        msg2["Subject"] = Header(self.subject, utf-8)
        #构造附件1
        att1 = MIMEText(open(Html_fujian_url, rb).read(), base64, gb2312)
        att1["Content-Type"] = application/octet-stream
        att1["Content-Disposition"] = attachment; filename="text.html" #这里的filename可以任意写,写什么名字,邮件中显示什么名字
        
        ‘‘‘同时发送邮件和正文,只需要给attach方法赋值‘‘‘
        msg2.attach(att1)
        msg2.attach(att2)
        
        try:
            smtp.connect(self.smtpserver)
            smtp.login(self.username, self.password)
            smtp.sendmail(self.sender, self.receiver, msg2.as_string())  #这里的msg.as_string,可以改为msg2
        except Exception as e:
            print(e)
        finally:
            smtp.quit()

 

二、地址格式转换问题

由于基础不牢,导致在最简单的字符串拼接是闹出笑话。

问题和地址有关

比如:给变量A赋值一个地址

line ="11.html"

A =" C:\Program Files (x86)\Python36-32\Scripts\"+line

因为\是转义字符,所以这个变量是不能直接被程序识别的,所以我想直接在字符串前加r,结果发现这种方式行不通,会报错。

A =(r" C:\Program Files (x86)\Python36-32\Scripts\")+line

后来想了想改成了双反斜杠,这样就能正常调用了。

A=" C:\\Program Files (x86)\Python36-32\\Scripts\\"+line

其实也可以这样,

A =(r" C:\Program Files (x86)\Python36-32\Scripts\\")+line

 

今天的记录就到这里。

谨记:牢记教训,夯实基础。

 

selenium-python问题日记

标签:pre   app   span   转义字符   filename   isp   code   ati   user   

原文地址:https://www.cnblogs.com/liubinghong/p/9325456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!