Selenium+Python之163邮件发送
今晚写了一个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邮件发送的更多相关文章
- asp.net 163邮件发送
<table id="> <tr> <td style="width: 393px"> 收信:<asp:TextBox ID=. ...
- C# QQ & 163 邮件发送
这篇文章的目的并不是说明如果进行右键的发送,因为在.net 坝坝的怀抱下邮件发送的功能实现并不会很难,当然邮件发送的代码,还是会贴上的,昨天在写一个邮件发送的功能,我直接找到了原来的代码,想着直接就可 ...
- 用python SMTP进行邮件发送
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart & ...
- python自动化之邮件发送
#!/usr/bin/env python # -*- coding:utf-8 -*- import smtplib from email.mime.multipart import MIMEMul ...
- 【python】smtp邮件发送
纯文本: #!/usr/bin/env python3 #coding: utf-8 import smtplib from email.mime.text import MIMEText from ...
- 【selenium+Python unittest】之发送带中文附件的邮箱
完整原码如下: import smtplib from email.mime.text import MIMEText #from email.header import Header from em ...
- python SMTP邮件发送(转载)
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- python selenium2示例 - email发送
前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录.结果等等等相关信息通过自动的手段发送给相关人员.python的smtplib.email模块为我们提供了很好的email发送等功能的 ...
- 测试开发【提测平台】分享11-Python实现邮件发送的两种方法实践
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 按照开发安排,本篇本应该是关于提测页面的搜索和显示实现,怕相似内容疲劳,这期改下内容顺序,将邮件服务的相关的提前,在之前的产品需求和原型中 ...
随机推荐
- 设置共享文件夹,samba和chmod到底谁的权限大
1,必备知识.已经知道的请跳过. 首先科普一下这两个东西:samba和chmod其实是完全不同层面的东西,一个是共享服务协议,一个是权限设置语句.但是他们有一个共同的用途:可以用来实现设置一个共享文件 ...
- Archives for the category: Fisheye/Crucible
Archives for the category: Fisheye/Crucible Introducing FishEye and Crucible 3.0 – Search, visualize ...
- 用友CDM系统“货位间商品移库单(一步)”表体增加“货位可用数量”字段,根据表头的选择的货位自动带出数值
系统控制台——业务单据定制——货位间商品移库单(一步) 明细字段——增加“可销数量”字段. 然后修改明细字段的“商品编号”自定义查询方案. 增加自定义资料检索方案hwyksp SQL: select ...
- android sqlite使用之模糊查询数据库数据的三种方式
android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.e ...
- asp.net MVC 模拟实现与源码分析
前言 本文流程#1: 从一个空项目->模拟实现一个从/Home/Test形式的URL敲入->后台逻辑处理->传入后台model参数->调用razor引擎->前台展示 涉及 ...
- 机器学习( Machine Learning)的定义
关于机器学习有两个相关的定义: 1)给计算机赋予没有固定编程的学习能力的研究领域. 2)一种计算机的程序,能从一些任务(T)和性能的度量(P),经验(E)中进行学习.在学习中,任务T的性能P能够随着P ...
- java编程思想笔记(一)——面向对象导论
1.1 抽象过程 1.所有编程语言都提供抽象编程机制. 2.人们所能够解决的问题的复杂性直接取决于抽象的类型(所抽象的是什么)和质量. 3."命令式"语言(basic,c等)都是对 ...
- 【C#】Send data between applications
This sample shows how to send data between different applications, including object data——transform ...
- xtrabackup在线备份主库,搭建slave,使用gtid模式
mysql:5.6.29xtrabackup:2.2.10master:192.168.166.129slave:192.168.166.131mysql数据目录:/data/mysqlmysql备份 ...
- Noip 2016
Day1 思路: 大致是 把一个环拆成链, 找某个人无非是向右找或向左找(即对当前点加或减) 若加上要移动的位置后坐标大于总人数, 就把当前坐标减去总人数, 若减去要移动的位置后坐标小于0, 就把当前 ...