使用selenium自动登录126/163邮箱并自动发送邮件

使用selenium自动登录126/163邮箱并自动发送邮件

我使用的是Python3.8.10+selenium

最近学习自动化,拿了126邮箱来练手,发现有定位登录界面的输入框和收件人的输入框的时候失败了,然后研究了好久才搞好,总结以下几点:
1、登录界面定位不到是因为被iframe包围了,所以需要先定位到iframe元素,然后在定位输入框
在这里插入图片描述
在这里插入图片描述
fr = dr.switch_to.frame(0) #定位到iframe
dr.find_element_by_name(‘email’).clear() #清除输入框内容
dr.find_element_by_class_name(‘j-nameforslide’).send_keys(‘用户账号’) #用户名
dr.find_element_by_name(‘email’).clear() #清除输入框内容
dr.find_element_by_name(‘password’).send_keys(‘密码’)#密码
dr.find_element_by_xpath(’//*[@id=“dologin”]’).click() #点击登录
2、收件人输入框定位失败的原因是元素还没加载出来,可以
加一个隐式等待

dr.implicitly_wait(10)
3、定位主题输入框的时候,它的id值是动态的,所以使用部分属性值匹配的方式定位
.使用部分属性值匹配(最强大的方法)
By.xpath("//input[starts-with(@id,‘subject’)
By.xpath("//input[ends-with(@id,‘id’)
By.xpath("//input[contains(@id,’
’)]")
4、定位写信输入框的时候发现也是被iframe包围了,所以也需要先定位iframe再定位写信输入框
iframe = dr.find_element_by_class_name(‘APP-editor-iframe’)
#进入iframe
dr.switch_to.frame(iframe)
#定位文本输入框并输入
dr.find_element_by_xpath(’/html/body[@class = “nui-scroll” and @spellcheck = “false”]/p’).send_keys(“我终于成功啦啦啦啦啦”)
5、因为发送按钮是在iframe外,所以要先退出iframe
dr.switch_to.default_content()

贴上我写的源代码

from selenium import webdriver
import  time

dr = webdriver.Chrome()
dr.get("https://www.126.com/")
dr.maximize_window()
time.sleep(2)

#登录126邮箱
fr = dr.switch_to.frame(0) #定位到iframe
dr.find_element_by_name('email').clear() #清除输入框内容
dr.find_element_by_class_name('j-nameforslide').send_keys('用户名') #用户名
dr.find_element_by_name('email').clear() #清除输入框内容
dr.find_element_by_name('password').send_keys('密码')#密码
dr.find_element_by_xpath('//*[@id="dologin"]').click() #点击登录

time.sleep(3)
#点击写信按钮
dr.find_element_by_xpath('//*[@id="_mail_component_149_149"]/span[2]').click()
#time.sleep(10)
#隐式等待
dr.implicitly_wait(5)
time.sleep(3)
#定位收件人输入框输入
dr.find_element_by_class_name('nui-editableAddr-ipt').send_keys('111@163.com')
#定位主题输入框输入
dr.find_element_by_xpath('//input[contains(@id,"_subjectInput")]').send_keys('测试发送邮件信息')
#文本输入框在iframe中,先定位iframe
iframe = dr.find_element_by_class_name('APP-editor-iframe')
#进入iframe
dr.switch_to.frame(iframe)
#定位文本输入框并输入
dr.find_element_by_xpath('/html/body[@class = "nui-scroll" and @spellcheck = "false"]/p').send_keys("我终于成功啦啦啦啦啦")
#发送按钮在iframe外,先退出iframe
dr.switch_to.default_content()
#定位发送按钮并点击
dr.find_element_by_xpath('//div[@class="nui-toolbar-item"]/div/span[2]').click()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值