selenium-python问题日记
今天在学习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_zhengwen_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方法传参att1和att2''' 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 #错误写法
因为\是转义字符,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
也可以将反斜杠改为正斜杠,在Windows和Linux下都能使用。
今天的记录就到这里。
牢记教训,夯实基础。