第一版:登录

#encoding=utf-8
import unittest
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys class setPageLoadTime(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome() def test_PageLoadTime(self):
# 设定页面加载限制时间为4秒
self.driver.set_page_load_timeout(4) #重点,限制超时时间
self.driver.maximize_window()
try:
startTime = time.time()
self.driver.get("http://mail.126.com")
except TimeoutException:
print (u'页面加载超过设定时间,超时')
# 当页面加载时间超过设定时间,
# 通过执行Javascript来stop加载,然后继续执行后续动作
self.driver.execute_script('window.stop()')
end = time.time() - startTime
print (end)
# 切换进frame控件
self.driver.switch_to.frame(self.driver.find_element_by_xpath("//iframe[contains(@id,'x-URS-iframe')]"))
# 获取用户名输入框
time.sleep(5)
userName = self.driver.find_element_by_xpath("//input[@data-placeholder='邮箱帐号或手机号码']")
# 输入用户名
userName.send_keys("******")
# 获取密码输入框
pwd = self.driver.find_element_by_xpath("//input[@data-placeholder='输入密码' and @name='password']")
# 输入密码
pwd.send_keys("*******")
# 发送一个回车键
pwd.send_keys(Keys.RETURN)
time.sleep(5)
assert u"退出" in self.driver.page_source def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()

结果:

第二版:登录+发送邮件

#encoding=utf-8
import unittest,time,traceback
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException,NoSuchElementException
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By class TestDemo(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome() def test_SouhuMailSendMail(self):
# 设定页面加载限制时间为4秒
self.driver.set_page_load_timeout(4)
self.driver.maximize_window()
try:
self.driver.get("http://mail.126.com")
except TimeoutException:
print (u'页面加载超过设定时间,超时')
self.driver.execute_script('window.stop()')
try:
# 切换进frame控件
self.driver.switch_to.frame(self.driver.find_element_by_xpath("//iframe[contains(@id,'x-URS-iframe')]"))
#time.sleep(5)
# 用户名
userName = self.driver.find_element_by_xpath("//input[@data-placeholder='邮箱帐号或手机号码']")
userName.send_keys("****")
# 密码
pwd = self.driver.find_element_by_xpath("//input[@data-placeholder='输入密码' and @name='password']")
pwd.send_keys("****")
# 登录按钮,回车代替
pwd.send_keys(Keys.RETURN)
# 显式等待,确认页面成功登录并跳转到登录成功后的首页
wait = WebDriverWait(self.driver,10)
wait.until(EC.element_to_be_clickable((By.XPATH,'//span[text()="写 信"]')))
time.sleep(2)
self.driver.find_element_by_xpath('//span[text()="写 信"]').click()
time.sleep(2)
# 输入收件人
receiver = self.driver.find_element_by_xpath("//*[contains(@id,'_mail_emailinput')]//input")
receiver.send_keys("****")
# 输入邮件标题
subject = self.driver.find_element_by_xpath('//*[contains(@id,"subjectInput")]')
subject.send_keys(u"这是一封测试邮件")
# 获取邮件正文的富文本框
iframe = self.driver.find_element_by_xpath("//*[contains(@id,'editor')]//iframe")
self.driver.switch_to.frame(iframe)
editBox = self.driver.find_element_by_xpath("/html/body")
editBox.send_keys(u"邮件正文内容")
self.driver.switch_to.default_content()
# 点击发送按钮
self.driver.find_element_by_xpath("//span[.='发送']").click()
# 显式等待发送成功元素是否出现在页面上
wait.until(EC.visibility_of_element_located((By.XPATH,"//*[contains(@id,'succInfo')]")))
print(u"邮件发送成功")
except TimeoutException:
print(u"显式等待页面元素超时")
except NoSuchElementException:
print(u"寻找的页面元素不存在",traceback.print_exc()) def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()

结果:

Python+Selenium+Webdriver+unittest 实现登录126邮箱的更多相关文章

  1. 【Selenium】【BugList8】126邮箱定位不到“退出”按钮:Message: TypeError: can't access dead object

    [流程描述] 登录126邮箱,退出 [代码] #coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() #dr ...

  2. python selenium 使用unittest 示例

    python selenium 使用unittest 示例 并等待某个元素示例 from selenium.webdriver.support.ui import WebDriverWait from ...

  3. Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接

    今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...

  4. python selenium webdriver入门基本操作

    python selenium webdriver入门基本操作 未经作者允许,禁止转载! from selenium import webdriver import time driver=webdr ...

  5. Python Selenium Webdriver常用方法总结

    Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...

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

    代码:#encoding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom ...

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

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

  8. python+selenium实现经京东登录+购物+支付

    import json from time import sleep from selenium import webdriver import chardet from selenium.webdr ...

  9. python+selenium自动化禅道登录测试

    本文以禅道登录测试为例,思路主要分openBrowser.openUrl.findElement.sendVals.checkResult.ReadUserdate六部分 openBrowser de ...

  10. 4、python+selenium实现12306模拟登录

    简介: 这里是利用了selenium+图片识别验证,来实现12306的模拟登录,中间也参考了好几个项目,实现了这个小demo,中间也遇到了很多的坑,主要难点在于图片识别和滑动验证这两个方面,图片识别是 ...

随机推荐

  1. WPF-封装自定义雷达图控件

    源码地址:https://gitee.com/LiuShuiRuoBing/code_blog 雷达图用于表示不同内容的占比关系,在项目中有广泛的应用,但是目前未曾有封装良好的雷达图控件,鉴于最近项目 ...

  2. WPF MVVM之点滴分享

    (第五点:绑定源有修改) 我并不打算长篇累牍的介绍什么是MVVM.我尽量简洁的介绍,并把自己的经验分享给大家. 一.关于MVVM M:Model,数据模型(后台存储数据的类) V:View,视图(大部 ...

  3. RabbitMQ 如何实现延迟队列?

    延迟队列是指当消息被发送以后,并不是立即执行,而是等待特定的时间后,消费者才会执行该消息. 延迟队列的使用场景有以下几种: 未按时支付的订单,30 分钟过期之后取消订单. 给活跃度比较低的用户间隔 N ...

  4. 《Python魔法大冒险》004 第一个魔法程序

    在图书馆的一个安静的角落,魔法师和小鱼坐在一张巨大的桌子前.桌子上摆放着那台神秘的笔记本电脑. 魔法师: 小鱼,你已经学会了如何安装魔法解释器和代码编辑器.是时候开始编写你的第一个Python魔法程序 ...

  5. Dockcer上传hub和配置国内镜像源

    Dockcer上传hub和配置国内镜像源 1.Dockcer上传hub 要将本地的Docker镜像上传到Docker镜像仓库,可以按照以下步骤操作: linux环境 1.创建用户 首先,确保你已经在D ...

  6. Solution -「营业」「CF 527C」Glass Carving

    Description Link. 有一个块 \(n\times m\) 的矩形,有 \(q\) 次操作,每次把矩形横 / 竖着切一刀,问切完后的最大矩形面积. Solution 一个不同于大多数人. ...

  7. 内网离线安装docker并配置使用nexus为docker私服

    背景 本文简单记录下最近在内网服务器离线安装docker及配置nexus作为docker私服,踩的一些坑.docker和k8s这块技术我跟得不是很紧,18年的时候用过一阵docker,后来发现它并不能 ...

  8. 深入解析 C++ 中的 ostringstream、istringstream 和 stringstream 用法

    引言: 在 C++ 中,ostringstream.istringstream 和 stringstream 是三个非常有用的字符串流类,它们允许我们以流的方式处理字符串数据.本文将深入探讨这三个类的 ...

  9. Go语言常用标准库——flag

    文章目录 os.Args flag包基本使用 导入flag包 flag参数类型 定义命令行flag参数 flag.Type() flag.TypeVar() flag.Parse() flag其他函数 ...

  10. PostgreSQL学习笔记-7.基础知识:子查询、自增、PRIVILEGES 权限

    子查询 子查询或称为内部查询.嵌套查询,指的是在 PostgreSQL 查询中的 WHERE 子句中嵌入查询语句.一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询可以与 SELEC ...