今晚写了一个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. 简单好用的Adapter---ArrayAdapter

    简单好用的Adapter---ArrayAdapter 拖延症最可怕的地方就是:就算自己这边没有拖延,但对方也会拖延,进而导致自己这边也开始拖延起来!现在这个项目我这边已经是完工了,但是对方迟迟没有搞 ...

  2. idea远程调试linux下的tomcat

    要远程调试代码,首先的保障本地的代码和远程tomcat的代码是同一份 首先在本地idea配置一个远程tomcat服务器 host就填写远程主机ip port填写访问的端口(不是调试端口) 然后在Sta ...

  3. 【repost】js字符串函数

    JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a ...

  4. 关于JAVA中split方法使用竖线异常的问题

    split表达式,其实就是一个正则表达式. *  ^ | 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\\加以转义.不然分割的结果就不是你想要的.

  5. openstack私有云布署实践【9.2 Glance镜像管理(办公网环境)】

    首先登录controller1创建glance数据库,并赋于远程和本地访问的权限.      mysql -u root -p   CREATE DATABASE glance; GRANT ALL ...

  6. 校门外的树 OpenJudge 1.6.06

    06:校门外的树 总时间限制:  1000ms 内存限制:  65536kB 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0 ...

  7. 浙大玉泉ubuntu L2TP VPN连接设置

    网络连接设置 1.内网有线 如果是笔记本且只用无线,剩下的就不需要看了.实验室台式机没有无线网卡不得不折腾-- 玉泉有线都是要绑定固定ip的,实验室无需和mac地址绑定,命令如下sudo gedit ...

  8. Listview右侧 IndexBar

    qq 好友聊天界面,右侧 IndexBar  A B C D ,点击跳转到相应的联系人名字 import android.content.Context; import android.graphic ...

  9. web前端入门

    看到很多同学在咨询:学习前端该怎么入门啊.推荐一下前端入门书籍啊什么的,作为一个过来人,我想告诉你一些小小技巧,避免走弯路: 1.先敲再学.如果你是零基础,就不要去每个标签,每个属性地去抠,因为里面有 ...

  10. 面试题-Java基础-面向对象

    1.面向对象软件开发的优点有哪些? 代码开发模块化,更易维护和修改.代码复用.增强代码的可靠性和灵活性.增加代码的可理解性.面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会 ...