• Selenium+Python之163邮件发送


         今晚写了一个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()
  • 相关阅读:
    Mysql上手
    Markdown精简版个人语法
    Sublime Text3插件管理
    Eclipse的快捷键
    使用github page 页面建博客中遇到的几个小问题
    2015 圣诞 限免软件分享
    啦啦啦-根据关键字进行字符串拷贝
    使用 sprintf swprintf 函数进行 unicode 与 ANSI 编码的转换
    c++11: 用户定义字面量
    通过模板获取数组长度
  • 原文地址:https://www.cnblogs.com/diaosicai/p/5940605.html
Copyright © 2020-2023  润新知