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下都能使用。
今天的记录就到这里。
牢记教训,夯实基础。
selenium-python问题日记的更多相关文章
- selenium + python自动化测试环境搭建
selenium的在python平台的搭建: 搭建平台windows 准备工具如下: --------------------------------------------------------- ...
- Page Object Model (Selenium, Python)
时间 2015-06-15 00:11:56 Qxf2 blog 原文 http://qxf2.com/blog/page-object-model-selenium-python/ 主题 Sel ...
- selenium + python 多浏览器测试
selenium + python 多浏览器测试 支持库包 在学习 Python + Selenium 正篇之前,先来看下对多浏览器模拟的支持.目前selenium包中已包含webdriver,hel ...
- selenium + python 自动化测试环境搭建
selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...
- <译>Selenium Python Bindings 5 - Waits
如今,大多数的Web应用程序使用AJAX技术.当页面加载到浏览器,页面中的元素也许在不同的时间间隔内加载.这使得元素很难定位,如果在DOM中的元素没有呈现,它将抛出ElementNotVisibleE ...
- <译>Selenium Python Bindings 2 - Getting Started
Simple Usage如果你已经安装了Selenium Python,你可以通过Python这样使用: #coding=gbk ''' Created on 2014年5月6日 @author: u ...
- <译>Selenium Python Bindings 1 - Installation
Installation Introduction Selenium Python bindings 提供了一个简单的API来使用Selenium WebDriver编写使用功能/验收测试.通过Sel ...
- selenium python 第一个脚本
为什么选择python?我的回答很简单,简单易学,功能强大! 下面看看python和selenium 2的结合是什么样子吧 一.第一个selenium python脚本: #coding = utf- ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
- selenium + python自动化测试环境搭建--亲测
环境准备: 1.下载所学安装包: setuptools https://pypi.python.org/packages/2.7/s/setuptools/ selenium https://pypi ...
随机推荐
- Html + Css 小知识点
选择器 根据选择器来对html内的内容做css修饰 样式: 找到一个元素{ 样式:值: } 找到一个元素:选择器 css都在style标签内部写 1.标签选择器: 根据标签名查找. 小丽: 2.id选 ...
- redis中redis.conf配置文件
redis.conf文件配置解释 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize yes 2. 当Redis以守护进程方式运行时,Red ...
- 安装oracle提示swap交换分区太小
1.用dd命令创建一个16G的文件 #dd if=/dev/zero of=/var/swapfile bs=1G count=16 2.将它创建为Linux Swap虚拟交换文件 #mkswap ...
- 北京集训TEST13——PA(Goodness)
题目: Description 桌面上放有 n 张卡牌.对于每张卡牌,一面是绿色的,另一面是红色的.卡牌的每一面都标有一个整数.对于卡牌a和卡牌b,卡牌a对卡牌b的好感度为卡牌a绿色面的数与卡牌b红色 ...
- log4j详细配置解析
出自:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录 ...
- Linux(10):期中架构(2)--- NFS存储服务 & 实时同步
1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2. ...
- net8:简易的文件磁盘管理操作一(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)
原文发布时间为:2008-08-07 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 基于CI框架的管理系统
1:ci框架是有入口文件的,前端和后台入口文件(index.php,admin.php):里面修改$application_folder = 'application/home': 2:项目基本都是在 ...
- raspberrypi树莓派liunx下安装golang1.9环境(debian)
直接安装go1.6以上版本会出现提示 Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4. Go1.9的构建过程需要用于引导的 Go1.4二 ...
- webstorm取消自动保存并标识修改的文件为星星标记
a.取消自动保存是去掉一下两个勾选. b.标记星星要勾选下面的选项. c.最终效果.