代码:
#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

												

python webdriver firefox 登录126邮箱,先添加联系人,然后进入首页发送邮件,带附件。的更多相关文章

  1. python webdriver 显示等待-自动登录126邮箱,添加联系人

    脚本内容:#encoding=utf-8#author-夏晓旭from selenium import webdriverimport timefrom selenium.webdriver.supp ...

  2. python webdriver api-对启动的火狐浏览器添加配置

    Webdriver启用的火狐不带插件,可以自已进行配置 先找到火狐的安装路径 C:\Program Files\Mozilla Firefox 步骤说明 在CMD中使用cd命令进入firefox.ex ...

  3. Python - WebDriver 识别登录验证码

    Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...

  4. python selenium模拟登录163邮箱和QQ空间

    最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...

  5. RFS实例登录126邮箱/利用cookie登陆百度

    可以直接添加用户关键字,也可以新建资源,将用户关键字添加入资源,然后导入整个资源文件 用户关键字内部实现如下: 打开126邮箱首页: Open Browser  Http://mail.126.com ...

  6. MY_Selenium登录126邮箱,定位不到账号输入框解决办法

    转自:https://www.cnblogs.com/wuhl-89/p/7778463.html 查看元素发现id为动态,所以不选择以id定位. 使用xpath路径定位,每次获取元素都失败,最后网上 ...

  7. Selenium登录126邮箱,chrome定位不到账号输入框解决办法

    使用id定位Message: no such element: Unable to locate element: {"method":"id","s ...

  8. Python WebDriver + Firefox 文件下载

    firefox可以通过 在地址栏输入:about:config 或about:aupport 来查看或修改配置信息. 这里有两种解决方式, 1.设置自动保存下载 如下图勾选:以后自动采用相同的动作处理 ...

  9. python 发送邮件 带附件

    # coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/5/26' # __Desc__ = 实现发送带有各种附件类型的邮件 ...

随机推荐

  1. Testlink自动执行用例小程序

    记得原来在一个公司时,具体很多原因,testlink上项目中的用例都需要执行形成漂亮的报告,但实际测试中又不需要去执行,所以就必须将用例根据上一次测试报告一个一个手工去贴结果刷用例,几百条用例,几天就 ...

  2. 【笔记】javascript权威指南-第三章-类型,值和变量

    javascript中的原始类型和对象类型(基本类型和引用类型) //本书是指:javascript权威指南    //以下内容摘记时间为:2013.7.27   计算机程序运行时需要对值(value ...

  3. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  4. 【转】.NET Framework、C#语言、IDE、CLR 版本历史及其差异

    原文地址: http://www.cnblogs.com/PurpleCow/archive/2012/06/17/2552780.html http://www.cnblogs.com/lhking ...

  5. 2018-2019-2 20165330《网络对抗技术》Exp2 后门原理与实践

    目录 基础问题 相关知识 实验内容 实验步骤 实验过程中遇到的问题 实验总结与体会 实验内容 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell, 任务计划启动 ...

  6. POJ 1185 - 炮兵阵地 & HDU 4539 - 郑厂长系列故事——排兵布阵 - [状压DP]

    印象中这道题好像我曾经肝过,但是没肝出来,现在肝出来了也挺开心的 题目链接:http://poj.org/problem?id=1185 Time Limit: 2000MS Memory Limit ...

  7. JS-nodejs--nodewebkit--npm穿墙cnpm

    npm install 本地安装与全局安装的区别 本地安装1. 将安装包放在 ./node_modules 下(运行npm时所在的目录)2. 可以通过 require() 来引入本地安装的包 全局安装 ...

  8. LoadRunner-录制脚本中文显示乱码

    录制的脚本中中文字符显示乱码 在Tools->Recording Options中设置支持UTF-8即可

  9. Integer VS AtomicInteger VS MutableInteger

    由于Integer是不可变的,每个循环增加key的value时会创建一个新的对象 每次value+1时不需要重新创建Integer对象 Integer, Boolean 等 is immutable, ...

  10. eclipse 64和32位切换

    JAVA_HOME配置的是JAVA_HOME=D:\Java\32\jdk1.6.0_13