python selenium实现QQ邮箱登录发送

python selenium实现QQ邮箱登录发送

登录

#selenium可以用来控制浏览器
from selenium import webdriver
#1.确保电脑上装有火狐浏览器(其他浏览器也可以,如果是其他浏览器就选别的)
#2.如果出现 WebDriverException: Message: ‘geckodriver‘ executable needs to be in PATH错误,则需要下载geckodriver selenium使用geckodriver 控制火狐浏览器。
#firefox driver淘宝镜像:http://npm.taobao.org/mirrors/geckodriver
#firefox与geckodriver版本对照表:https://blog.csdn.net/qq_28284093/article/details/81938789
#下载好之后将geckodriver.exe放在python安装目录下,(跟python.exe放在一起)
browser=webdriver.Firefox()
#这一步之后火狐浏览器会被打开
#进入登录界面
browser.get('https://mail.qq.com')
#直接获取获取不到账号输入框因为这个input实在已改子frame中,如果元素在子frame中需要先切换到这个子frame中
#具体的办法是在页面 右键 查找元素 然后在查找器上搜frame看一看我们需要输入的input在那个frame下
browser.switch_to.frame('login_frame')
#用元素选择器找到我们需要的输入框,然后可以根据id classname或者xpath等找到该元素
email_elem=browser.find_element_by_id('u')
#通过send_keys输入账号
email_elem.send_keys('*******')
#已同样的方式找到密码输入input
password_elem=browser.find_element_by_id('p')
#输入密码
password_elem.send_keys('*********')
#勾选上下次自动登录
browser.find_element_by_id('p_low_login_enable').click()
#找到登录点击按钮
login_butn=browser.find_element_by_id('login_button')
#点击
login_butn.click()

发送邮件

#因为我们之前使用“browser.switch_to.frame”进入一个子frame中,现在需要回到默认。
browser.switch_to.default_content()
#找到“写信”
fasong_elem=browser.find_element_by_id('composebtn')
fasong_elem.click()
#收件人 主题 都在一个mainFrame下,需要先切换
browser.switch_to.frame('mainFrame')
#这里需要多次尝试才能找到输入框
js_input_elem=browser.find_element_by_xpath("//*[@id='toAreaCtrl']/*[@class='addr_text']/input")
#输入收件人
js_input_elem.send_keys('90889224****@qq.com')
subject_elem=browser.find_element_by_id('subject')
#输入主题
subject_elem.send_keys('这是用python实现发送的邮件')
#正文输入在mainFrame下的一个子frame中,这个子frame的id和name都是动态生成的数字,想要切换到这个frame只能先获取这个元素,再专递给switch_to.frame
browser.switch_to.frame(browser.find_element_by_class_name('qmEditorIfrmEditArea'))
#找到正文输入元素
body_elem=browser.find_element_by_xpath('/html/body')
#这里的点击可有可无
body_elem.click()
#输入正文
body_elem.send_keys('python selenium实现QQ邮箱登录发送')
#回到父frame,因为发送按钮在mainFrame中
browser.switch_to.parent_frame()
send_elem=browser.find_element_by_name('sendbtn')
#发送
send_elem.click()

一些技巧:

  • 通过在浏览器调试中的查看器里面搜索frame能找到页面中的frame,但是同样会有很多干扰信息出现。
  • 选中元素后在查看器中点击右键->复制->Xpath可以直接复制该元素的Xpath。

总结:

像这种知识最好要在实践中学习。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值