Python+Selenium+Webdriver+unittest 实现登录126邮箱
第一版:登录
#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邮箱的更多相关文章
- 【Selenium】【BugList8】126邮箱定位不到“退出”按钮:Message: TypeError: can't access dead object
[流程描述] 登录126邮箱,退出 [代码] #coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() #dr ...
- python selenium 使用unittest 示例
python selenium 使用unittest 示例 并等待某个元素示例 from selenium.webdriver.support.ui import WebDriverWait from ...
- Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接
今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...
- python selenium webdriver入门基本操作
python selenium webdriver入门基本操作 未经作者允许,禁止转载! from selenium import webdriver import time driver=webdr ...
- Python Selenium Webdriver常用方法总结
Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...
- python webdriver firefox 登录126邮箱,先添加联系人,然后进入首页发送邮件,带附件。
代码:#encoding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom ...
- python webdriver 显示等待-自动登录126邮箱,添加联系人
脚本内容:#encoding=utf-8#author-夏晓旭from selenium import webdriverimport timefrom selenium.webdriver.supp ...
- python+selenium实现经京东登录+购物+支付
import json from time import sleep from selenium import webdriver import chardet from selenium.webdr ...
- python+selenium自动化禅道登录测试
本文以禅道登录测试为例,思路主要分openBrowser.openUrl.findElement.sendVals.checkResult.ReadUserdate六部分 openBrowser de ...
- 4、python+selenium实现12306模拟登录
简介: 这里是利用了selenium+图片识别验证,来实现12306的模拟登录,中间也参考了好几个项目,实现了这个小demo,中间也遇到了很多的坑,主要难点在于图片识别和滑动验证这两个方面,图片识别是 ...
随机推荐
- 《Kali渗透基础》11. 无线渗透(一)
@ 目录 1:无线技术 2:IEEE 802.11 标准 2.1:无线网络分层 2.2:IEEE 2.3:日常使用标准 2.3.1:802.11 2.3.2:802.11b 2.3.3:802.11a ...
- LeetCode 周赛上分之旅 #44 同余前缀和问题与经典倍增 LCA 算法
️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...
- PanGu-Coder2:从排序中学习,激发大模型潜力
本文分享自华为云社区<PanGu-Coder2:从排序中学习,激发大模型潜力>,作者: 华为云软件分析Lab . 2022年7月,华为云PaaS技术创新Lab联合华为诺亚方舟语音语义实验室 ...
- 一篇文章让你弄懂分布式一致性协议Paxos
一.Paxos协议简介 Paxos算法由Leslie Lamport在1990年提出,它是少数在工程实践中被证实的强一致性.高可用.去中心的分布式协议.Paxos协议用于在多个副本之间在有限时间内对某 ...
- Solution -「洛谷 P6287」「COCI 2016-2017」Mag
Description Link. 定义一条链的价值为链上点权乘积除以节链上点数,求一条价值最小的链. Solution 结论:答案链上最多包含一个 \(2\)(其余全为 \(1\)),并且不在链的两 ...
- 【matplotlib基础】--3D图形
matplotlib 在1.0版本之前其实是不支持3D图形绘制的. 后来的版本中,matplotlib加入了3D图形的支持,不仅仅是为了使数据的展示更加生动和有趣.更重要的是,由于多了一个维度,扩展了 ...
- Nacos启动报错:Please set the JAVA_HOME variable in your environment, We need java(x64) jdk8 or later
可能原因: 1.JDK版本过低(应不低于1.8) 2.未设置jdk环境变量(可能性低) 3.jdk环境变量设置不适配nacos(博主就是这个原因) 解决方案: 1.直接在startup.cmd文件中设 ...
- c语言代码练习10(改进)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <ma ...
- DPDK-22.11.2 [四] Virtio_user as Exception Path
因为dpdk是把网卡操作全部拿到用户层,与原生系统驱动不再兼容,所以被dpdk接管的网卡从系统层面(ip a/ifconfig)无法看到,同样数据也不再经过系统内核. 如果想把数据再发送到系统,就要用 ...
- C#/.NET/.NET Core优秀项目和框架精选(2023年10月更新,项目分类已整理完成欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)
前言 帮助开发者发现功能强大.性能优越.创新前沿.简单易用的C#/.NET/.NET Core优秀项目和框架,无论你是寻找灵感.学习新技术.改进代码质量,还是想拓展自己的技术视野,都能为你提供有价值的 ...