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()

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM