今晚写了一个163邮箱登录的脚本,由于不停的访问163登录主页导致直接访问163邮箱主页登录需要输入验证码,因为无法获取到验证码,就这导致直接访问主页登录脚本不可行,为了绕过验证码,现在先访问hao123主页,再从主页点击'邮箱'登录。

 #coding=utf-8
from selenium import webdriver
from time import sleep driver = webdriver.Firefox()
driver.maximize_window()
driver.get("http://www.hao123.com")
sleep(5)
#获取hao123主页的句柄
handle_hao123 = driver.current_window_handle
#登录163邮箱
driver.find_element_by_link_text("邮箱").click()
driver.find_element_by_id("mailName").clear()
driver.find_element_by_id("mailName").send_keys("邮箱地址") #你的邮箱地址
driver.find_element_by_id("mailPwd").clear()
driver.find_element_by_id("mailPwd").send_keys("邮箱密码") #你的邮箱密码
driver.find_element_by_id("mailSubmit").click()
#获取所有窗口的句柄
all_handles = driver.window_handles
#根据窗口句柄的再判断,切换到163窗口
for handle in all_handles:
if handle != handle_hao123:
driver.switch_to_window(handle)
print("now access mail 163!")
#定位'写信'按钮
driver.find_elements_by_class_name("oz0")[1].click()
sleep(1)
#定位收件人输入框并输入收件人信息
driver.find_element_by_class_name("nui-editableAddr-ipt").clear()
driver.find_element_by_class_name("nui-editableAddr-ipt").send_keys("收件人邮箱")
#定位邮件的主题并输入信息
driver.find_elements_by_class_name("nui-ipt-input")[2].clear()
driver.find_elements_by_class_name("nui-ipt-input")[2].send_keys("发送邮件测试")
#由于通过class_name定位出多个元素,需先定位一组元素再做筛选
#添加附件,由于此标签为input,因此可以直接使用send_keys的方式添加附件
driver.find_element_by_xpath('//input[@type="file"]').send_keys("D:\\sublimePython\\cookie.txt")
#由于在邮件正文中有iframe,需先定位并切换到表单中
frame = driver.find_element_by_class_name("APP-editor-iframe") #若iframe有id或是name属性,可以直接切换
driver.switch_to_frame(frame)
#输入正文
driver.find_element_by_xpath('//body[@class="nui-scroll"]').send_keys("Good study, day day up!")
driver.switch_to_default_content()
#点击发送
driver.find_elements_by_class_name("nui-btn-text")[-2].click()
sleep(5)
driver.close() driver.quit()

PS:看来自己确实太菜,今天在办公室又可以直接访问邮箱主页进行登录,脚本其实都差不多,如下:

 #coding=utf-8
from selenium import webdriver
from time import sleep driver = webdriver.Chrome()
#最大化窗口
driver.maximize_window()
driver.get('http://www.mail.163.com')
sleep(2)
#切换到表单
driver.switch_to.frame("x-URS-iframe")
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys("邮箱账户")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("邮箱密码")
driver.find_element_by_id("dologin").click()
sleep(5)
#在表单里面操作完毕后,无论页面是否进行跳转,必须有退出表单的操作
driver.switch_to_default_content()
#定位'写信'按钮
driver.find_elements_by_class_name("oz0")[1].click()
sleep(1)
#定位收件人输入框并输入收件人信息
driver.find_element_by_class_name("nui-editableAddr-ipt").clear()
driver.find_element_by_class_name("nui-editableAddr-ipt").send_keys("收件人邮箱")
#定位邮件的主题并输入信息
driver.find_elements_by_class_name("nui-ipt-input")[2].clear()
driver.find_elements_by_class_name("nui-ipt-input")[2].send_keys("发送邮件测试")
#由于通过class_name定位出多个元素,需先定位一组元素再做筛选
#添加附件
driver.find_element_by_xpath('//input[@type="file"]').send_keys("D:\\sublimePython\\cookie.txt") #由于在邮件正文中有iframe,需先定位并切换到表单中
frame = driver.find_element_by_class_name("APP-editor-iframe") #若iframe有id或是name属性,可以直接切换
driver.switch_to_frame(frame)
#输入正文
driver.find_element_by_xpath('//body[@class="nui-scroll"]').send_keys("Good study, day day up!")
driver.switch_to_default_content()
#点击发送
driver.find_elements_by_class_name("nui-btn-text")[-2].click()
sleep(5)
driver.quit()

Selenium+Python之163邮件发送的更多相关文章

  1. asp.net 163邮件发送

    <table id="> <tr> <td style="width: 393px"> 收信:<asp:TextBox ID=. ...

  2. C# QQ & 163 邮件发送

    这篇文章的目的并不是说明如果进行右键的发送,因为在.net 坝坝的怀抱下邮件发送的功能实现并不会很难,当然邮件发送的代码,还是会贴上的,昨天在写一个邮件发送的功能,我直接找到了原来的代码,想着直接就可 ...

  3. 用python SMTP进行邮件发送

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart & ...

  4. python自动化之邮件发送

    #!/usr/bin/env python # -*- coding:utf-8 -*- import smtplib from email.mime.multipart import MIMEMul ...

  5. 【python】smtp邮件发送

    纯文本: #!/usr/bin/env python3 #coding: utf-8 import smtplib from email.mime.text import MIMEText from ...

  6. 【selenium+Python unittest】之发送带中文附件的邮箱

    完整原码如下: import smtplib from email.mime.text import MIMEText #from email.header import Header from em ...

  7. python SMTP邮件发送(转载)

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  8. python selenium2示例 - email发送

    前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录.结果等等等相关信息通过自动的手段发送给相关人员.python的smtplib.email模块为我们提供了很好的email发送等功能的 ...

  9. 测试开发【提测平台】分享11-Python实现邮件发送的两种方法实践

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 按照开发安排,本篇本应该是关于提测页面的搜索和显示实现,怕相似内容疲劳,这期改下内容顺序,将邮件服务的相关的提前,在之前的产品需求和原型中 ...

随机推荐

  1. 实现Avl平衡树

    实现Avl平衡树   一.介绍 AVL树是一种自平衡的二叉搜索树,它由Adelson-Velskii和 Landis于1962年发表在论文<An algorithm for the organi ...

  2. ACM 位运算

    的幂 boolean power2(int x) { return((x&(x-1))==0)&&(x!=0): } For example: #include<stdi ...

  3. 性能测试工具比较:LoadRunner vs JMeter - 测试结果数据比较

    对web请求(HTTP/HTML)进行性能测试,确认请求响应时间.分别使用Loadrunner和JMeter进行测试,比较测试结果. 1.LoadRunner测试web请求响应时间 1.1  编制(录 ...

  4. Http的四种post方式

    1.引言 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交 ...

  5. Internet Liberity -- a specific anonymous internet guide

    Here we see. Please leave your comments if you have some views. Happy hacking! Free the internet!

  6. C语言之数组

    数组 数组就是在内存空间中,开辟一个大的空间,然后再将这个大的空间均的分为若干份的小空间,每个小空间用来保存一个数据. 1). 数组的专业术语: 长度:指的能存放数据的个数 下标/索引:每一个数据所在 ...

  7. Dos.ORM Select查询 自定义列

    自定义列 .Select( p = >new{ test = p.id}) // 同sql 列名 as 新列名 如下是 自己在写代码的例子,查询,分页,where条件,排序 var where ...

  8. java基础练习 4

    import java.util.Scanner; public class Forth { public static void main(String[] args){ /*请输入星期几的第一个字 ...

  9. (七)第一个python程序!

    这是对我自己来说比较有仪式的一篇随笔记录,说了那么多,开始第一个pyhton小程序吧! 首先找一个版本比较新的Linux系统, 执行Python –V 查看一下你的Python版本: # python ...

  10. DW,DM,ODS的区别

    数据仓库的重要应用是将不同来源的数据和异构数据通过ETL整合在一起,为决策分析提供支撑,若在同一个数据库中分不同用户,此意义不大:假设所有有用户都在一个数据库里,如果因为某个原因数据库重启,那么会影响 ...