第一版:登录

#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. [TSG开发日志](一)软件基础框架

    目录 前言 说明 框架 TSG_Framework 一.底层信号机制 TSG_Caller 二.参数类型声明 TSG_Params 三.设备类声明 TSG_Device 四.设备配置文件控制 TSG_ ...

  2. 关于TCP 四次挥手过程中的reset包问题

    数据包过程 TCP状态机转换过程 客户端在接受到第32个数据包之后,应该发送1个对FIN的ACK数据包,然而客户端缺直接连续发送了3个Rest数据包36~38,客户端并未进入time wait阶段,直 ...

  3. KRPANO最新完整汉化中文版 (KRPANO-1.19-PR10-WIN汉化版)

    KRPano 最新版本汉化krpano-1.19-pr10-win,由KRPano技术解密群:551278936 提供. 下载地址:http://pan.baidu.com/s/1bBmD5c 如果需 ...

  4. Solution -「ARC 123F」Insert Addition

    大约是翻译了一下官方题解? @Description@ 对于一个整数序列 \(P=(P_{1},\dots,P_{m})\),定义 \(f(P)\) 为一个序列 \(Q\) 满足: \(Q_{i}=P ...

  5. Solution -「THUPC 2019」Duckchess

    Description Link. 大模拟是不可能给你概括题意的. Solution (据说鸭棋题解用这个标题很吉利)(这里是被点名批评的 长度 19k 的打法)(先说好代码里 Chinglish 满 ...

  6. 数据泵(impdb)导入Oracle分片的数据库dump文件

    数据泵(impdb)导入Oracle数据库 一.sqlplus登录目标数据库,创建导入的目录路径 #该目录要在导入的数据库本机建立,如果是docker就在容器内部创建 create directory ...

  7. Vue项目——尚品会

    1: 项目的初始化 环境要求:node + webpack + 淘宝镜像 初始化项目: vue create 项目名称 目录/文件分析: - node_modules文件夹:放置项目依赖的地方 - p ...

  8. Flask框架——flask介绍

    文章目录 1 什么是flask? 2 为什么要有flask? 3 学前准备:虚拟环境 3.1 虚拟环境是什么? 3.2 如何使用虚拟环境? 3.2.1 搭建虚拟环境 3.2.1 在虚拟环境中安装我们的 ...

  9. Python开发之Django框架

    一. Django框架 01.网络软件开发架构演变过程 02.HTTP协议讲解 03.web应用与框架介绍及手撸web框架 04.Django入门项目创建与必会三板斧 05.Django静态文件配置与 ...

  10. 深挖 Python 元组 pt.1

    哈喽大家好,我是咸鱼 好久不见甚是想念,2023 年最后一次法定节假日已经结束了,不知道各位小伙伴是不是跟咸鱼一样今天就开始"搬砖"了呢? 我们知道元组(tuple)是 Pytho ...