今晚写了一个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. JQuery实现分页程序代码

    JQuery实现分页程序代码 做Web开发的程序员,分页时在所难免的,微软GridView.AspPager等设置分页数据可以自动分页,但是这里浏览器会闪动,用户体验不是很友好,在此我整理了JQuer ...

  2. Chrome新的语言API,让您的浏览器说话

    还记得曾经那个能识别语音的API吗?当时一直在想,如果能让浏览器替我念出文字就好了.现在chrome的最新版本Version 33 中您只要按F12然后在console里面输入这段代码,您就能听到浏览 ...

  3. c# 关于10进制和16进制转换以及显示

    直接举例说明: int i = 15;//一个10进制数 string txt = Convert.ToString(i,16);//将上面10进制以16进制形式显示为f string s = &qu ...

  4. WPF4.5新特性(MSDN的翻译读不太懂)

    WPF4.5新特性(MSDN的翻译读不太懂) 1. 新的Doctype声明 XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明. <!DOCTYPE html PU ...

  5. vim 多行同时输入,且输入数值递增

    很有用的命令. 很给力的说. http://vim.wikia.com/wiki/Making_a_list_of_numbers 我在 html中需要增加新的标签的时候,就有用到过. 原来的html ...

  6. Hackers’ Crackdown-----UVA11825-----DP+状态压缩

    题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. Ubuntu下OpenVPN客户端配置教程

    一般来说,提供Web服务的Linux服务器是很少需要连接OpenVPN的,但是个人Linux计算机在很多时候就需要连接OpenVPN了.比如以Linux为开发环境,需要连接公司的OpenVPN等等. ...

  8. C#开发学习——web服务器端控件

        Asp.net在客户端开发和web开发所用到的控件还是有很大的差别的,而且Web开发的界面是在浏览器中显示的,所以控件的设计都和前边学习HTML设计有联系,没有客户端开发那么简单,不过我们可以 ...

  9. Tensorflow (1)

    'tf.placeholder' or 'tf.Variable' The difference is that with tf.Variable you have to provide an ini ...

  10. Linux网络管理常用命令:net-tools VS iproute2

    Exported from workflowy! net-tools ifconfigifconfig命令:用于接口及地址查看和管理 route netstat arp iproute2 ip lin ...