python webdriver firefox 登录126邮箱,先添加联系人,然后进入首页发送邮件,带附件。...

代码:
#encoding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

#print u"启动浏览器..."
print "start browser..."
#创建Firefox浏览器实例
driver=webdriver.Firefox(executable_path="c:\\geckodriver")
#最大化浏览器窗口
driver.maximize_window()
#print u"启动浏览器成功..."
print "start browser done..."
#print u"访问126邮箱登页。。。"
print "access 126 mail login page..."
driver.get("http://mail.126.com")
#暂停5秒钟,一遍邮箱登录页面加载完成
time.sleep(5)
assert u"126网易免费邮--你的专业电子邮局" in driver.title

print "access 126 mail login page done"

wait=WebDriverWait(driver,30)

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"x-URS-iframe")))

username=driver.find_element_by_xpath("//input[@name='email']")

username.send_keys("xiaxiaoxu1987")

pwd=driver.find_element_by_xpath("//input[@name='password']")

pwd.send_keys("gloryroad")

pwd.send_keys(Keys.RETURN)

print "user login..."

time.sleep(5)
time1=time.time()
driver.switch_to.default_content()
print "total time:",time.time()-time1
assert u"网易邮箱" in driver.title
print "login done"
address_book_link = wait.until(lambda x: x.find_element_by_xpath("//div[text()='通讯录']"))
address_book_link.click()

add_contact_button = wait.until(lambda x: x.find_element_by_xpath("//span[text()='新建联系人']"))
add_contact_button.click()

contact_name = wait.until(lambda x: x.find_element_by_xpath("//a[@title='编辑详细姓名']/preceding-sibling::div/input"))
contact_name.send_keys(u"徐凤钗")
contact_email = wait.until(lambda x: x.find_element_by_xpath("//*[@id='iaddress_MAIL_wrap']//input"))
contact_email.send_keys("593152023@qq.com")
contact_is_star = wait.until(lambda x: x.find_element_by_xpath("//span[text()='设为星标联系人']/preceding-sibling::span/b"))
contact_is_star.click()
contact_mobile = wait.until(lambda x: x.find_element_by_xpath("//*[@id='iaddress_TEL_wrap']//dd//input"))
contact_mobile.send_keys('18141134488')
contact_other_info = wait.until(lambda x: x.find_element_by_xpath("//textarea"))
contact_other_info.send_keys('my wife')
contact_save_button = wait.until(lambda x: x.find_element_by_xpath("//span[.='确 定']"))
contact_save_button.click()

print u"进入首页。。。"
time.sleep(3)
mainPage=wait.until(EC.visibility_of_element_located((By.XPATH,"//div[.='首页']")))#也好用
#mainPage=wait.until(lambda x: x.find_element(by='xpath', value = "//div[.='首页']"))#好用
#mainPage=driver.find_element_by_xpath("//div[.='首页']")#好用
mainPage.click()
assert u"已发送" in driver.page_source
print u"进入首页成功"
print "write message..."
writeMessage=wait.until(lambda x:x.find_element_by_xpath("//span[text()='写 信']"))
writeMessage.click()
#收件人
receiver=wait.until(lambda x:x.find_element_by_xpath("//div[contains(@id,'_mail_emailinput')]/input"))
receiver.send_keys("367224698@qq.com")
#主题
theme=wait.until(lambda x:x.find_element_by_xpath("//div[@aria-label='邮件主题输入框,请输入邮件主题']/input"))
theme.send_keys(u"测试邮件")
#添加附件
attachment=wait.until(lambda x:x.find_element_by_xpath("//div[@title='点击添加附件']/input[@size='1' and @type='file']"))
attachment.send_keys("d:\\test.txt")
#切入正文iframe
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@tabindex=1]"))

editBox=driver.find_element_by_xpath('/html/body')
editBox.send_keys(u"发给夏晓旭的一封信")
driver.switch_to.default_content()
#print u"写信完成"
print "write message done"
driver.find_element_by_xpath("//header//span[text()='发送']").click()
#print u"开始发送邮件"
print "start to send email.."
time.sleep(3)
assert u"发送成功" in driver.page_source
#print u"邮件发送成功"
print "send emial done"
driver.quit()

结果:

C:\Python27\python.exe D:/test/hybrid_version2/TestScripts/TestScript.py
start browser...
start browser done...
access 126 mail login page...
access 126 mail login page done
user login...
total time: 0.00800013542175
login done
进入首页。。。
进入首页成功
write message...
write message done
start to send email..
send emial done

Process finished with exit code 0



转载于:https://www.cnblogs.com/xiaxiaoxu/p/9343935.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[vue] 你是从vue哪个版本开始用的?你知道1.x和2.x有什么区别吗?

[vue] 你是从vue哪个版本开始用的?你知道1.x和2.x有什么区别吗? 像1.0与2.0,我只知道一点-。- 1、 2.0生命生命周期变化感觉变得更加语义化一点(有规律可寻,更好记了),而且增加了beforeUpdate、…

[vue] 你知道vue中key的原理吗?说说你对它的理解

[vue] 你知道vue中key的原理吗?说说你对它的理解 key的作用主要是为了高效的更新虚拟DOM; 如果没有唯一的key, 数据更新时, 相同节点更新前后无法准确一一对应起来,会导致更新效率降低; 当页面的数据发生变化时,Diff算法只会比较同一层级的节点&#xf…

Java就应该这样学pdf

下载地址:网盘下载 《其实你应该这样学Java(附盘)》,本书分为3篇。第1篇是Java入门,简单介绍了Java开发环境、类型和运算、选择语句、循环语句、跳转语句、数组的基本应用;第2篇是面向对象的基础知识,包含类、继承以及…

[vue] vue中怎么重置data?

[vue] vue中怎么重置data? 初始状态下设置data数据的默认值,重置时直接bject.assign(this.$data, this.$options.data())说明: this.$data获取当前状态下的data this.$options.data()获取该组件初始状态下的data(即初始默认值) 如果只想修改…

redis nginx session tomcat

Redis解决session共享 http://lyl-zsu.iteye.com/blog/2408292 http://zx10103326.iteye.com/blog/2244195 https://www.dssz.com/3179792.html 注意 要下载 三个 Redis 存放 session的三个包 视频学习地址在: 分布式环境下session跨域共享原理-咕泡学院出品 https:…

[vue-cli]怎么使用vue-cli3创建一个项目?

[vue-cli]怎么使用vue-cli3创建一个项目? 直接 vue create 项目名个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[vue-cli]不用vue-cli,你自己有搭建过vue的开发环境吗?流程是什么?

[vue-cli]不用vue-cli,你自己有搭建过vue的开发环境吗?流程是什么? 基本概念 首先先了解先webpack的基本概念,webpack属于一个构建工具,主要有mode、entry、output、loader、plugin这几部分组成。 目标 本文会带你实现…

伪类选择器的用途

伪类选择器的用途 1.做鼠标移入、移出效果切换 .a {display: inline-block;width: 70px;height: 20px;border: 2px solid #e01222;line-height: 20px;text-align: center;color: #e01222; } a:hover {background-color: #e01222;color: #fff;} 2.画三角形 .triangle:before…

[vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢

[vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢 创建多个app? app new Vue({}) app2 new Vue({})个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣…

html画特殊图形(待修改)

1.画圆 <!doctype html> <html><head><style>*{margin:0;padding:0;}.box{margin:50px auto;width:100px;height:100px;border-radius:50%;background:pink;}</style></head> <body><div class"box"></div> …

[vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?

[vue-cli]vue-cli3你有使用过吗&#xff1f;它和2.x版本有什么区别&#xff1f; Vue CLI 的包名称由 vue-cli 改成了 vue/cli vue cli 3 npm install -g vue/cli vue create hello-worldvue cli 2.x npm install -g vue-cli vue init webpack my-project个人简介 我是歌谣&am…

Makefile的介绍与使用

1 target ... : prerequisites ... //目标文件&#xff1a;所依赖的文件 2 command //该target要执行的命令&#xff08;任意的shell命令&#xff09; 3 ... 4 ... 这是一个文件的依赖关系&#xff0c;也就是说&#xff0c;target这一个或多个的目标文件依赖于pr…

第11章-img特征,vertical-align,cursor,opacity

1.img特征 2.vertical-align垂直对齐方式 与text-align对比 3.cursor指针样式 default auto pointer move text wait help 4.opacity透明度 与rgba对比 span不支持text-align属性 IE8及以下不兼容:filter:alpha(opacity0~100);

[css] pseudo-class与pseudo-element有什么区别?

[css] pseudo-class与pseudo-element有什么区别&#xff1f; 伪类表示已存在的某个元素处于某种状态&#xff0c;但是通过dom树又无法表示这种状态&#xff0c;就可以通过伪类来为其添加样式。例如a元素的:hover, :active等伪元素主要是用来创建一些不存在原有dom结构树种的元…

iotop命令

iotop命令是一个用来监视磁盘I/O使用状况的top类工具&#xff0c;iotop具有与top相似的UI&#xff0c;其中包括pid、user、I/O、进程等相关信息等&#xff1b; //iotop安装&#xff1a; yum -y install iotop //或者编译安装 wget http://guichaz.free.fr/iotop/files/iotop-0.…

[css] 行内元素可以设置padding和margin吗?

[css] 行内元素可以设置padding和margin吗&#xff1f; 行内元素的纵向padding和margin都是不考虑的&#xff0c;这是css规范定义的。 inline元素确实可以设置垂直方向的 padding 和 margin 值&#xff0c;但是 inline 元素的 margin 和 padding 的垂直方向上不产生边距效果&a…

第10章-定位、层级关系

一.定位 1.static 默认属性。块级元素→矩形框&#xff0c;行级元素→行框 2.fixed 类似于absolute&#xff0c;但包含块是视窗本身 3.relative 原本所占的空间仍保留 4.absolute 生成一个块级框&#xff0c;变成块级元素。float也是 二.层级关系 z-index

ccf_201712-2

题目 问题描述有n个小朋友围成一圈玩游戏&#xff0c;小朋友从1至n编号&#xff0c;2号小朋友坐在1号小朋友的顺时针方向&#xff0c;3号小朋友坐在2号小朋友的顺时针方向&#xff0c;……&#xff0c;1号小朋友坐在n号小朋友的顺时针方向。游戏开始&#xff0c;从1号小朋友开始…

第9章-浮动

1.文档流 文档中可显示对象在排列时所占用的位置、空间 2.浮动的一般情况 3.浮动的特殊情况 4.浮动对文字的影响 5.float和inline-block的比较 6.清除浮动 &#xff08;1&#xff09;最后添加空标签 <div class"clear"><div> clear属性值:left r…

[css] translate3D有什么作用?

[css] translate3D有什么作用&#xff1f; 3d动画&#xff0c;启用GPU硬件加速个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题