登录163邮箱发邮件

#encoding=utf-8
from selenium import webdriver
import time

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

#打开浏览器
driver = webdriver.Chrome(executable_path = "e:\\chromedriver")

url = "https://mail.163.com"

#访问163邮箱
driver.get(url)

#暂停3秒,等待页面出现,这个地方要加sleep,不然切入frame会出错
time.sleep(3)

#定位登录所在的frame
frame = driver.find_element_by_id("x-URS-iframe")

#切换进入frame
driver.switch_to.frame(frame)

time.sleep(2)

#获取用户名、密码输入框元素对象

username = driver.find_element_by_xpath(‘//input[@name="email"]‘)
password = driver.find_element_by_xpath(‘//input[@name="password"]‘)

#显式等待用户名输入框出现,清空,并输入用户名
WebDriverWait(driver,10).until(EC.visibility_of(username))
username.clear()
username.send_keys("xxxxxx")

#显式等待密码输入框出现,清空,并输入密码
WebDriverWait(driver,10).until(EC.visibility_of(password))
password.clear()
password.send_keys("xxxxxxx")

#显式等待定位到登录按钮并点击
WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("dologin")).click()

assert
#发邮件
#暂停3秒,等待页面出现
time.sleep(3)

#定位到写信按钮,显式等待可点击后,并点击
writeButton = driver.find_element_by_xpath(‘//b[@class="nui-ico fn-bg ga0"]‘)

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,‘//b[@class="nui-ico fn-bg ga0"]‘)))

writeButton.click()

#直接显示等待元素出现后,并点击
#WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath(‘//b[@class="nui-ico fn-bg ga0"]‘)).click()

#获取收件人输入框、主题输入框元素对象
send_address = driver.find_element_by_xpath(‘//input[@class="nui-editableAddr-ipt"]‘)
subject = driver.find_element_by_xpath(‘//input[@class="nui-ipt-input" and @tabindex="1"]‘)

#等待收件人输入框可用,并输入收件人
WebDriverWait(driver,10,0.2).until(EC.visibility_of(send_address))

send_address.send_keys("[email protected]")

#等待主题输入框可见,并输入主题
WebDriverWait(driver,10).until(EC.visibility_of(subject))

subject.send_keys(u"测试163发邮件")

#定位到附件按钮,并发送附件
attachment = driver.find_element_by_xpath(‘//input[@class="O0"]‘)

#用这个方法有问题
#WebDriverWait(driver,10).until(EC.visibility_of(attachment))

attachment.send_keys("e:\\1.jpg")

#WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath(‘//input[@class="O0"]‘)).send_keys("e:\\1.jpg")

#暂停几秒,等待附件上传
time.sleep(3)

#获取到正文所在的frame,并切入
iframe = driver.find_element_by_xpath(‘//iframe[@class="APP-editor-iframe"]‘)
driver.switch_to.frame(iframe)

#获取到正文输入框对象元素,并输入正文
content = driver.find_element_by_xpath(‘//body‘)
WebDriverWait(driver,10).until(EC.visibility_of(content))

content.send_keys(u"测试邮件发送")

#从正文frame切换出来,以便操作外面的发送按钮
driver.switch_to.default_content()

time.sleep(3)

#定位到发送按钮并点
sendButton = driver.find_element_by_xpath(‘//div[@class="frame-main-cont-body nui-scroll"]//div[@role="button"][1]//b‘)
sendButton.click()

#显式等待方式定位发送按钮,并点击
#WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath(‘//div[@class="frame-main-cont-body nui-scroll"]//div[@role="button"][1]//b‘)).click()

time.sleep(5)

#退出驱动并关闭所有窗口
driver.quit()

原文地址:http://blog.51cto.com/13496943/2170773

时间: 2024-07-31 16:04:47

登录163邮箱发邮件的相关文章

mailx加163邮箱发邮件

mailx加163邮箱发邮件 参考:https://www.cnblogs.com/myvic/p/9579954.html 配置 $ yum install mailx -y $ vim /etc/mail.rc set [email protected] set smtp=smtps://smtp.163.com:465 set [email protected] set smtp-auth-password=zhj6b266 set smtp-auth=login set nss-conf

在Linux中如何向163邮箱发邮件

linux收发邮件 1.首先要保证自己的Linux服务器能够ping通www.baidu.com ping www.baicu.com 2.申请一个@163.com个人邮箱 3.将进入邮箱后进行如下设置. 1.首页电击设置,点击POP3/SMTP/IMAP设置. 2.将对应选项下所有能选的都选上.然后自己设置一个授权密码这个密码记好,后面要用. 4.在Linux中将如下命令追加到, /etc/mail.rc的文件最后. # send email set from=此处填写邮箱地址 set smt

使用新申请的163邮箱发邮件出现的问题

前提:新申请的163邮箱. 老的126或163在发送时没有问题.    貌似网易对于新申请的邮箱账号增加了安全认证机制. C#使用163的SMTP服务器发送邮件 http://www.cnblogs.com/OpenCoder/archive/2010/07/16/1779247.html 发送时,异常提示: 邮箱不可用. 服务器响应为:User has no permission http://www.jb51.net/softjc/387126.html 登陆163设置好客户端授权后, 在发

Page Object实例(一) - Java + Selenium 登录163邮箱

Page Object 是什么: Page Object是Selenium2开始提供的一种代码设计模式. 其核心思想是把web页面的元素查找及操作和页面测试分离开. 这样之后的更新和维护中如果有页面元素变动, 不需要修改测试类, 只要修改其对应的页面元素的查找代码即可. 登录163邮箱的实例包括: 其中: 1. LoginPage.java 是主要测试页面, 包括查找元素, 操作元素实现登录 2. HomePage.java 是登录成功后会跳转到的页面, 在此用来作为登录操作方法的返回值及拿个元

[Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

目录(?)[+] 前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时继续介绍Selenium+Python官网Locating Elements部分内容.        希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~        [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)        

【webdriver自动化】使用unittest实现自动登录163邮箱然后新建一个联系人

#练习:登录163邮箱然后新建一个联系人 import unittest import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver import ActionChains from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.su

Thinkphp3.2版本使用163邮箱发(验证码)邮件

今天忽然想写一个用户修改密码的功能,又没有短信接口,只能选择用邮箱发送验证码啦,穷啊,没办法,哈哈,以下为正文. ------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.准备工作 (1)下载PHPMailer,插件,下载地址:链接:htt

5、Selenium+Python自动登录163邮箱发送邮件

1.Selenium实现自动化,需要定位元素,以下查看163邮箱的登录元素 (1)登录(定位到登录框,登录框是一个iframe,如果没有定位到iframe,是无法定位到账号框与密码框) 定位到邮箱框(name='email') 定位到密码框(name='password') 定位到登录按钮(id="dologin") 2.代码实现 #coding=utf-8 import time from selenium import webdriver broswer = webdriver.I

python学习(5)--网易邮箱发邮件异常解决办法

在用python发邮件时,发现用网易邮箱作为发件人.会出现以下异常: smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp12,EMCowxxn7yO5rI9bT0uuEg--.45230S2 1226142521,please see http://mail.163.com/help/help_spam_16.htm?ip=133.13.132.12&hostid=smtp12&time=1533242532') 通过查看上面的网址:http://