登录搜狐邮箱并发送邮件的3中方法写自定义目录标题

  • 用于设置剪切板内容
  • 键盘按键映射字典
  • 键盘键按下
  • 键盘键抬起

登录搜狐邮箱并发送邮件的3中方法
(1)传统的通过send_keys
(2)显示等待------切换frame—使用火狐才行(注意时间的等待)
(3)通过切换tab键-----替换了切换frame

Way1
#encoding=utf-8
from selenium import webdriver
import unittest,time,traceback
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.common.by import By

class TestDemo(unittest.TestCase):
def setUp(self):
#self.driver = webdriver.Chrome(executable_path = “d:\chromedriver”)
self.driver = webdriver.Firefox(executable_path=“d:\geckodriver”)
def test_SohuMailSendEMail(self):
url = “http://mail.sohu.com”
# 访问搜狐邮箱登录页
self.driver.get(url)
time.sleep(3)

    try:userName=self.driver.find_element_by_xpath('//input[@placeholder="请输入您的邮箱"]')userName.clear()userName.send_keys("fosterwu")passWord = self.driver.find_element_by_xpath('//input[@placeholder="请输入您的密码"]')passWord.clear()passWord.send_keys("1111")login= self.driver.find_element_by_xpath(u'//input[@value="登 录"]')login.click()wait = WebDriverWait(self.driver, 10)# 显示等待,确定页面是否成功登录并跳转到登录成功后的首页wait.until(EC.element_to_be_clickable((By.XPATH,'//li[.="写邮件"]')))self.driver.find_element_by_xpath(u'//li[text()="写邮件"]').click()time.sleep(2)receiver = self.driver.find_element_by_xpath('//div[@arr="mail.to_render"]//input')# 输入收件人receiver.send_keys("fosterwu@sohu.com")subject = self.driver.find_element_by_xpath('//input[@ng-model="mail.subject"]')# 输入邮件标题subject.send_keys(u"一封测试邮件!")time.sleep(3)# 获取邮件正文编辑区域的iframe页面元素对象iframe = self.driver.find_element_by_xpath('//iframe[contains(@id, "ueditor")]')# 通过switch_to.frame()方法切换进入富文本框中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, '//span[.="发送成功"]')))print (u"邮件发送成功")except TimeoutException:print (u"显示等待页面元素超时")except NoSuchElementException:print (u"寻找的页面元素不存在", traceback.print_exc())except Exception:# 打印其他异常堆栈信息print (traceback.print_exc())def tearDown(self):# 退出IE浏览器self.driver.quit()

if name == ‘main’:
unittest.main()

Way2`
#encoding=utf-8
from selenium import webdriver
import unittest, time, traceback
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.common.by import By

class TestDemo(unittest.TestCase):

def setUp(self):# 启动Firefox浏览器self.driver = webdriver.Firefox(executable_path="d:\\geckodriver")#self.driver = webdriver.Ie(executable_path = "d:\\IEDriverServer")#self.driver = webdriver.Chrome(executable_path = "d:\\chromedriver")def test_SohuMailSendEMail(self):url = "http://mail.sohu.com"# 访问搜狐邮箱登录页self.driver.get(url)time.sleep(3)try:userName = self.driver.find_element_by_xpath\('//input[@placeholder="请输入您的邮箱"]')userName.clear()userName.send_keys("fosterwu")passWord = self.driver.find_element_by_xpath\('//input[@placeholder="请输入您的密码"]')passWord.clear()passWord.send_keys("1111")login = self.driver.find_element_by_xpath('//input[@value="登 录"]')login.click()

#这里是超时的影响
wait = WebDriverWait(self.driver, 10)
# 显示等待,确定页面是否成功登录并跳转到登录成功后的首页
wait.until(EC.element_to_be_clickable
((By.XPATH, ‘//li[text()=“写邮件”]’)))
self.driver.find_element_by_xpath(’//li[text()=“写邮件”]’).click()
time.sleep(2)
receiver = self.driver.find_element_by_xpath
(’//div[@arr=“mail.to_render”]//input’)
# 输入收件人
receiver.send_keys(“fosterwu@sohu.com”)
time.sleep(3)
subject = self.driver.find_element_by_xpath
(’//input[@ng-model=“mail.subject”]’)
# 输入邮件标题
subject.send_keys(u"一封测试邮件!")
time.sleep(3)
# 获取邮件正文编辑区域的iframe页面元素对象
iframe = self.driver.find_element_by_xpath
(’//iframe[contains(@id, “ueditor”)]’)
# 通过switch_to.frame()方法切换进入富文本框中
self.driver.switch_to.frame(iframe)
# 通过JavaScript代码向邮件正文编辑框中输入正文
self.driver.execute_script(“document.getElementsByTagName(‘body’)
[0].innerHTML=‘邮件的正文内容;’”)
# 从富文本框中切换出,回到默认页面
self.driver.switch_to.default_content()
# 找到页面上的“发送”按钮,并单击它
self.driver.find_element_by_xpath(’//span[.=“发送”]’).click()
# 显示都等待含有关键字串“发送成功”的页面元素出现在页面中
wait.until(EC.visibility_of_element_located
((By.XPATH, ‘//span[.=“发送成功”]’)))
print ( u"邮件发送成功")
except TimeoutException:
print ( u"显示等待页面元素超时")
except NoSuchElementException:
print ( u"寻找的页面元素不存在", traceback.print_exc())
except Exception:
# 打印其他异常堆栈信息
print ( traceback.print_exc())

def tearDown(self):# 退出IE浏览器self.driver.quit()

if name == ‘main’:
unittest.main()

避免等待超时时,则需要设置对应的时间

(3)通过切换tab键–跳过切换frame
#encoding=utf-8
from selenium import webdriver
import unittest, time, traceback
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.common.by import By
from selenium.webdriver.common.keys import Keys
import win32clipboard as w
import win32api, win32con

用于设置剪切板内容

def setText(aString):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
w.CloseClipboard()

键盘按键映射字典

VK_CODE = {‘ctrl’:0x11, ‘v’:0x56}

键盘键按下

def keyDown(keyName):
win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)

键盘键抬起

def keyUp(keyName):
win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)

class TestDemo(unittest.TestCase):

def setUp(self):# 启动Firefox浏览器self.driver = webdriver.Firefox(executable_path="d:\\geckodriver")def test_SohuMailSendEMail(self):url = "http://mail.sohu.com"# 访问搜狐邮箱登录页self.driver.get(url)time.sleep(3)try:userName = self.driver.find_element_by_xpath\('//input[@placeholder="请输入您的邮箱"]')userName.clear()userName.send_keys("fosterwu")passWord = self.driver.find_element_by_xpath\('//input[@placeholder="请输入您的密码"]')passWord.clear()passWord.send_keys("1111")login = self.driver.find_element_by_xpath('//input[@value="登 录"]')login.click()wait = WebDriverWait(self.driver, 10)# 显示等待,确定页面是否成功登录并跳转到登录成功后的首页wait.until(EC.element_to_be_clickable\((By.XPATH, '//li[text()="写邮件"]')))self.driver.find_element_by_xpath('//li[text()="写邮件"]').click()time.sleep(2)receiver = self.driver.find_element_by_xpath\('//div[@arr="mail.to_render"]//input')# 输入收件人receiver.send_keys("fosterwu@sohu.com")time.sleep(2)subject = self.driver.find_element_by_xpath\('//input[@ng-model="mail.subject"]')# 输入邮件标题subject.send_keys(u"一封测试邮件!")# 输入完邮件标题后,按下Tab键可以将页面焦点切换到富文本框编辑区域subject.send_keys(Keys.TAB)subject.send_keys(Keys.TAB)time.sleep(2)# 设置剪切板内容,也就是将要输入的正文内容setText(u"邮件正文内容")# 模拟键盘的Ctrl + v组合键,将剪切板内容粘贴到富文本编辑区中keyDown("ctrl")keyDown("v")keyUp("v")keyUp("ctrl")# 找到页面上的“发送”按钮,并单击它self.driver.find_element_by_xpath('//span[.="发送"]').click()# 显示都等待含有关键字串“发送成功”的页面元素出现在页面中wait.until(EC.visibility_of_element_located\((By.XPATH, '//span[.="发送成功"]')))print (u"邮件发送成功")except TimeoutException:print (u"显示等待页面元素超时")except NoSuchElementException:print (u"寻找的页面元素不存在", traceback.print_exc())except Exception:# 打印其他异常堆栈信息print (traceback.print_exc())def tearDown(self):# 退出IE浏览器self.driver.quit()

if name == ‘main’:
unittest.main()

登录搜狐邮箱并发送邮件的3中方法相关推荐

  1. python3 selenium 自动化 登录搜狐邮箱之 函数的二次封装和模块的调用及函数的调用

    先建一个 sohuEmailPublic.py 文件,对函数进行封装,让它作为公共的模块开使用 代码如下: from selenium import webdriver from time impor ...

  2. 搜狐邮箱打开第三方邮件客户端登录功能及设置独立密码方法

    使用第三方邮件客户端登录搜狐邮箱,需要首先开启第三方邮件客户端邮件协议登录功能,并设置独立密码,具体方法如下: 1)点击"选项->设置"进入搜狐网页邮箱设置页面 2)点击设置 ...

  3. 搜狐邮箱(@sohu.com):启用IMAP/SMTP+独立密码

    搜狐邮箱是由搜狐公司(sohu.com)开发的电子邮件服务,分为sohu免费邮箱(@sohu.com),sohuVIP邮箱(@vip.sohu.com)和sohu企业邮箱.搜狐作为国内最早一批开发邮局 ...

  4. 搜狐邮箱怎么开启pop3服务器,各大中文邮箱POP3服务开启方法

    关于POP3,前边我们已经介绍过POP3的含义,同时还为大家讲过POP3和IMAP的区别,今天为大家提供的是目前主流和中文邮箱的POP3开通方式,欢迎阅读 QQ邮箱 接收邮件服务器(POP): pop ...

  5. 搜狐邮箱的Python经验

    为什么80%的码农都做不了架构师?>>>    搜狐邮箱的Python经验 通过该文档,您可以学习到以下内容:Web框架Tomado是什么?如何发布Python项目?如何加速你的Py ...

  6. 搜狐邮箱想说爱你不容易!

    妈蛋搜狐邮箱不能用了,接收邮件慢,反应慢. 这次公司申请邓白氏编码,人家竟然没收到,要不是人家打电话过来我还以为人家收到了呢,竟耽误事,用了这么多年,从一开始高中学会上网就用搜狐邮箱,也有十几年了,一 ...

  7. 搜狐邮箱无法被Foxmail、网易邮箱大师代收的问题的解决方法

    (1)进入搜狐网页邮箱设置:选项--设置 (2)点击"POP3/SMTP/IMAP" (3)在这里设置第三方客户端独立密码,需要验证手机短信验证码 一定要保存好这个生成的独立密码, ...

  8. 搜狐视频开放平台的申请使用方法

    软件是否好用,还得大家下载搜狐视频安装才知道.本文分享搜狐视频开放平台的申请使用方法.搜狐视频电脑版是电脑桌面客户端应用,用户只要登录帐号就能够拥有云同步功能,无论是在家.出差都可以查看自己的视频观看 ...

  9. 惊!搜狐邮箱乱添附件!!!!

    先不说搜狐的那个所谓"新版"邮箱做得有多烂,只说刚才我回复别人的邮件时,写好后点发送竟然说我没选收件人(我靠,我是回复啊),于是我再打开那封邮件,点回复,写完,OK可以发出去了.但 ...

最新文章

  1. 力所能及的做些自己喜欢和有趣的事
  2. 文件转换html文件失败,pandoc文档转换失败,出现错误67
  3. AGG第二十二课 conv_contour函数auto_detect_orientation的字体应用
  4. 字符集与编码(四)——Unicode
  5. java安装库源文件_JOGL安装
  6. 20190812_Intel Realsense D435 关于摄像头USB掉线问题问题记录汇总
  7. mysql 取 浮点运算_mysql 浮点型运算误差原因分析及解决方法
  8. mysql 备份 master_如何配置MYSQL的MASTER---SLAVE复制备份?
  9. 大学c语言编程模板,c语言编程模板
  10. 幅度和幅值有区别吗_你知道避雷器与浪涌保护器的区别吗?
  11. 一种自适应模拟退火粒子群优化算法-附代码
  12. codeblocks下载
  13. 使用Bartend提取K3领料数据以实现发料包装标识批量自动打印
  14. c语言 圆周率10000位,圆周率(小数点后10000位,背死你)
  15. 100个思维模型(不一定都适用,各取所需)
  16. SKU后台管理添加商品
  17. 总结一个python招聘测试题
  18. java and运算_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
  19. 哈工大C语言程序设计精髓 第十一周编程题
  20. 数据挖掘中最容易犯的几个错误,你知道吗?

热门文章

  1. MyBatis 源码分析系列文章导读 1
  2. Android button背景设置透明色和样式
  3. XDOJ 分配宝藏 C
  4. “醒醒吧,世界上有技术驱动型公司!”
  5. Python3 公历转农历
  6. 利用ggplot2绘制功能富集气泡图
  7. 如何用AI设计一幅杂志封面
  8. Java程序设计(2021春)——第三章类的重用笔记与思考
  9. html图片加载不出来
  10. ConcurrentMap为神马好