与之前登陆的版本类似,采用了显示等待的方法判断元素可见

#encoding=utf-8
from selenium import webdriver
import time
import traceback
# 导入By类
from selenium.webdriver.common.by import By
# 导入显示等待类
from selenium.webdriver.support.ui import WebDriverWait
# 导入期望场景类
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementExceptiondef visible_by_xpath(driver,xpath_exp):'''xpath定位元素是否可见'''wait = WebDriverWait(driver, 10, 0.2)wait.until(EC.visibility_of_element_located((By.XPATH, xpath_exp)))def visible_by_id(driver,id_exp):'''id定位元素是否可见'''wait = WebDriverWait(driver, 10, 0.2)wait.until(EC.visibility_of_element_located((By.ID, id_exp)))def switch_to_iframe(driver,xpath_exp):'''切入指定的frame'''wait = WebDriverWait(driver, 10, 0.2)wait.until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_xpath(xpath_exp)))######################################
#进入126邮箱首页
driver=webdriver.Chrome()
driver.get("http://mail.126.com")
time.sleep(3)'''登陆'''
#切入到账号登陆frame
switch_to_iframe(driver,'//*[@class="loginWrap"]/div/iframe')
#定位到用户名输入框
username=driver.find_element_by_xpath("//input[@placeholder='邮箱帐号或手机号' and @name='email']")
#定位到密码输入框
password=driver.find_element_by_xpath("//input[@placeholder='密码']")
#定位到登陆按钮
submit_button=driver.find_element_by_xpath("//a[@id='dologin']")
#清除并分别输入用户名和密码(********替换为自己的用户名和密码********)
username.clear()
password.clear()
username.send_keys("xxxxxxxxx")
password.send_keys("111111111")
#单击登陆按钮
submit_button.click()
#断言登陆成功
visible_by_xpath(driver,"//a[contains(text(),'退出')]")
assert u"退出"  in driver.page_source'''写邮件并添加附件'''
#单击写信
write_lettre_link=driver.find_element_by_xpath("//span[text()='写 信']")
write_lettre_link.click()
#断言弹出写信的frame
visible_by_xpath(driver,"//footer//span[text()='发送']")
#定位到收件人,主题,添加附件,正文
mail_address=driver.find_element_by_xpath("//input[@role='combobox' and @tabindex='1']")
mail_subject=driver.find_element_by_xpath("//input[@tabindex='1' and @maxlength='256']")
file_element=driver.find_element_by_xpath("//input[@type='file']")
mail_address.send_keys("111111111@126.com")
mail_subject.send_keys(u"测试邮件")
file_element.send_keys("c:\\a.txt")#必须是绝对路径,否则会报错time.sleep(1)
visible_by_xpath(driver,"//span[text()='上传完成']")
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@tabindex=1]"))
driver.execute_script("document.getElementsByTagName('body')\[0].innerHTML='<b>邮件的正文内容<b>;'")
driver.switch_to.default_content()'''发送'''
send_mail_button=driver.find_element_by_xpath("//div/div/span[text()='发送']")
send_mail_button.click()
visible_by_xpath(driver,"//h1")
assert u"发送成功"  in driver.page_sourcelogout_link=driver.find_element_by_xpath("//a[text()='退出']")
visible_by_xpath(driver,"//h1")
assert u"登录"  in driver.page_source'''退出浏览器'''
driver.quit()

python3+selenium实现126邮箱登陆并发送带附件的邮件(显示等待版本)相关推荐

  1. php邮箱文件发送源码,php简单实现发送带附件的邮件

    本文实例讲述了php简单实现发送带附件的邮件.分享给大家供大家参考.具体如下: 下面是静态html代码: 带附件的邮件发送 发送人: 收件人: 邮件主题: 邮件内容: 附件上传: sendmail.p ...

  2. python菜谱发送到邮箱_Python菜谱5:发送带附件的邮件

    我们平时需要使用 Python 发送各类邮件,这个需求怎么来实现?答案其实很简单,smtplib 和 email库可以帮忙实现这个需求.smtplib 和 email 的组合可以用来发送各类邮件:普通 ...

  3. Python 发送带附件的邮件 发出去的附件格式就成bin

    导语:学习到使用Python发送带附件的邮件,但收件人收到的附件格式是bin,附件名称也不是filename写的名称. 1.效果如下: 2.解决办法: 将 att1['Content-Disposit ...

  4. SpringBoot中整合Mail实现发送带附件的邮件

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/35688 实现最简单的带标题以及文本内容的邮件发送: https:/ ...

  5. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

  6. 利用Jmail发送带附件的邮件时乱码的解决方案

    今天在利用Jmail发送带附件的邮件时,一直收不到附件,而是得到一些"乱码"如下:This is a multipart message in MIME format. ----N ...

  7. mailgun php版本,php – Mailgun发送带附件的邮件

    我正在尝试使用mailgun发送带附件的邮件. 邮件本身很好,但它缺少附件. 同样在mailgun日志中,它显示正常,但附件数组为空. 我用example.com替换了我的凭证. 该文件放在子目录中并 ...

  8. 使用Python的smtplib模块发送带附件的邮件

      上一篇文章<使用Python的smtplib模块发送简单邮件>介绍了调用smtplib模块发送包含简单内容的邮件,本文继续学习参考文献1中的发送带附件的邮件的示例代码,同时由于参考文献 ...

  9. python3+selenium实现qq邮箱登陆并发送邮件

    基于selenium,使用chrome浏览器,完成qq邮箱登陆并发送发邮件功能,暂时未封装.qq邮箱和126邮箱登陆还是有一些区别的. #encoding=utf-8 from selenium im ...

  10. 用javamail发送带附件的邮件

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

最新文章

  1. 基于JWT(Json Web Token)的ASP.NET Web API授权方式
  2. UITableView性能提升和优化(第3章) 之一
  3. VMware Workstation 9下基于Ubuntu 12.10服务器版本的Hadoop集群的配置
  4. Blazor——Asp.net core的新前端框架
  5. 快速的骆驼和云消息传递
  6. mysql把用户权限授予新用户_MySQL新建普通用户和库并授予新用户对新库的所有权限...
  7. python如何计算整数和_python 整数和浮点数
  8. hadoop运维之jobtracker无故停止服务
  9. Compiz Check测试Linux桌面3D兼容性
  10. Windows8 RP版亲手体验全过程
  11. 进程、线程、同步问题
  12. Mobi格式的书籍整理
  13. 网格建模资源管理(第一次翻译老外的东西,嘿嘿!)
  14. 联想g400从u盘启动计算机,联想g400笔记本设置U盘启动的图文步骤
  15. 【Premiere】入门自学 1
  16. Linux鸟哥的私房菜(硬件)
  17. 一般微型计算机必备的输入输出设备,一般使用什么作为微型计算机必备的输入输出设备...
  18. 西安翻译学院东区计算机教室,精品案例 | 智慧教室的秘密,竟然在西安翻译学院曝光了!...
  19. linux下latex中文字体,Latex中文字体问题
  20. linux中的ctrl+z和ctrl+c以及exit

热门文章

  1. 干货 | 收藏贴!一文看懂静态资源服务沉浮及其在携程的演进
  2. Backtrader量化回测8——手续费
  3. 概率论考点之方差及数学期望
  4. Qt编译QtXlsx库
  5. mysql phpmyadmin 安装_phpMyAdmin 安装
  6. 字节跳动 8 年,抖音、头条的技术能力开发者都可以用起来了!
  7. 计算机网络共享文件密码,如何给局域网共享文件夹设置访问密码
  8. 工业电脑量产测试之----U盘DOS 启动盘制作(1)
  9. Bootstrap 对齐方式
  10. EBS 12.1.3 应用打补丁操作及问题处理