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

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

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

  1. #coding=utf-8
  2. from selenium import webdriver
  3. from time import sleep
  4.  
  5. driver = webdriver.Chrome()
  6. #最大化窗口
  7. driver.maximize_window()
  8. driver.get('http://www.mail.163.com')
  9. sleep(2)
  10. #切换到表单
  11. driver.switch_to.frame("x-URS-iframe")
  12. driver.find_element_by_name("email").clear()
  13. driver.find_element_by_name("email").send_keys("邮箱账户")
  14. driver.find_element_by_name("password").clear()
  15. driver.find_element_by_name("password").send_keys("邮箱密码")
  16. driver.find_element_by_id("dologin").click()
  17. sleep(5)
  18. #在表单里面操作完毕后,无论页面是否进行跳转,必须有退出表单的操作
  19. driver.switch_to_default_content()
  20. #定位'写信'按钮
  21. driver.find_elements_by_class_name("oz0")[1].click()
  22. sleep(1)
  23. #定位收件人输入框并输入收件人信息
  24. driver.find_element_by_class_name("nui-editableAddr-ipt").clear()
  25. driver.find_element_by_class_name("nui-editableAddr-ipt").send_keys("收件人邮箱")
  26. #定位邮件的主题并输入信息
  27. driver.find_elements_by_class_name("nui-ipt-input")[2].clear()
  28. driver.find_elements_by_class_name("nui-ipt-input")[2].send_keys("发送邮件测试")
  29. #由于通过class_name定位出多个元素,需先定位一组元素再做筛选
  30. #添加附件
  31. driver.find_element_by_xpath('//input[@type="file"]').send_keys("D:\\sublimePython\\cookie.txt")
  32.  
  33. #由于在邮件正文中有iframe,需先定位并切换到表单中
  34. frame = driver.find_element_by_class_name("APP-editor-iframe") #若iframe有id或是name属性,可以直接切换
  35. driver.switch_to_frame(frame)
  36. #输入正文
  37. driver.find_element_by_xpath('//body[@class="nui-scroll"]').send_keys("Good study, day day up!")
  38. driver.switch_to_default_content()
  39. #点击发送
  40. driver.find_elements_by_class_name("nui-btn-text")[-2].click()
  41. sleep(5)
  42. 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. 设置共享文件夹,samba和chmod到底谁的权限大

    1,必备知识.已经知道的请跳过. 首先科普一下这两个东西:samba和chmod其实是完全不同层面的东西,一个是共享服务协议,一个是权限设置语句.但是他们有一个共同的用途:可以用来实现设置一个共享文件 ...

  2. Archives for the category: Fisheye/Crucible

    Archives for the category: Fisheye/Crucible Introducing FishEye and Crucible 3.0 – Search, visualize ...

  3. 用友CDM系统“货位间商品移库单(一步)”表体增加“货位可用数量”字段,根据表头的选择的货位自动带出数值

    系统控制台——业务单据定制——货位间商品移库单(一步) 明细字段——增加“可销数量”字段. 然后修改明细字段的“商品编号”自定义查询方案. 增加自定义资料检索方案hwyksp SQL: select ...

  4. android sqlite使用之模糊查询数据库数据的三种方式

    android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.e ...

  5. asp.net MVC 模拟实现与源码分析

    前言 本文流程#1: 从一个空项目->模拟实现一个从/Home/Test形式的URL敲入->后台逻辑处理->传入后台model参数->调用razor引擎->前台展示 涉及 ...

  6. 机器学习( Machine Learning)的定义

    关于机器学习有两个相关的定义: 1)给计算机赋予没有固定编程的学习能力的研究领域. 2)一种计算机的程序,能从一些任务(T)和性能的度量(P),经验(E)中进行学习.在学习中,任务T的性能P能够随着P ...

  7. java编程思想笔记(一)——面向对象导论

    1.1 抽象过程 1.所有编程语言都提供抽象编程机制. 2.人们所能够解决的问题的复杂性直接取决于抽象的类型(所抽象的是什么)和质量. 3."命令式"语言(basic,c等)都是对 ...

  8. 【C#】Send data between applications

    This sample shows how to send data between different applications, including object data——transform ...

  9. xtrabackup在线备份主库,搭建slave,使用gtid模式

    mysql:5.6.29xtrabackup:2.2.10master:192.168.166.129slave:192.168.166.131mysql数据目录:/data/mysqlmysql备份 ...

  10. Noip 2016

    Day1 思路: 大致是 把一个环拆成链, 找某个人无非是向右找或向左找(即对当前点加或减) 若加上要移动的位置后坐标大于总人数, 就把当前坐标减去总人数, 若减去要移动的位置后坐标小于0, 就把当前 ...