直接上代码,如下:
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.126.com")
time.sleep(1) # 加一个延时操作,才能定位到下面的iframe
iframe1 = driver.find_element_by_xpath("//div[@id='loginDiv']/iframe")
driver.switch_to.frame(iframe1)
#执行邮箱登录操作
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys("emailName")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("passWord")
driver.find_element_by_id("dologin").click()
driver.switch_to.default_content() # 这里一定要记得退回到之前的主文档页面
time.sleep(3)
# ====== 定位到写信tab(下面两种方法都可以定位到)
driver.find_element_by_xpath("//span[contains(text(),'写 信')]").click()
#driver.find_element_by_xpath("//div[@id='dvNavTop']/ul/li[2]/span[2]").click()
time.sleep(4)
# ====== 填写收件人邮箱地址
driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys(r'lixxxxx@163.com') #字符串加r,防止转义
# ====== 填写邮件主题(通过and连接多个属性来唯一标识某个元素)
#driver.find_element_by_xpath("//input[@class='nui-ipt-input']").send_keys(u"自动化测试") #定位不到
#driver.find_element_by_xpath("//input[@class='nui-ipt-input' and @type='text']").send_keys(u"自动化测试") #定位不到
driver.find_element_by_xpath("//input[@class='nui-ipt-input' and @maxlength='256']").send_keys(u'自动化测试')
time.sleep(8)
# ====== 定位到邮件正文
#通过switch_to.frame()将当前定位切换到frame/iframe表单的内嵌页面中
#注意:若iframe有id或是name属性,可以直接切换
driver.switch_to.frame(driver.find_element_by_class_name("APP-editor-iframe"))
#在内嵌页面中定位邮件内容位置
emailcontext = driver.find_element_by_class_name('nui-scroll')
# ====== 填写邮件内容
emailcontext.send_keys("这是第一封自动化测试邮件")
time.sleep(10)
# ====== 跳出嵌套页面
driver.switch_to.default_content()
time.sleep(5)
# ====== 定位到发送tab
sendmail = driver.find_element_by_xpath("//span[contains(text(),'发送') and @class='nui-btn-text']")
sendmail.click()
#校验邮件是否发送成功
try:
assert '发送成功' in driver.page_source
except AssertionError:
print("很遗憾,邮件发送失败!")
else:
print("恭喜你:邮件发送成功!")
time.sleep(10)
driver.quit()
最后运行结果如下:
打开接受邮箱,看到如下收件信息: