【基於Python的Selenium2自動化測試】05 - 模擬126郵箱的發郵件功能
阿新 • • 發佈:2019-01-12
直接上程式碼,如下:
# 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'[email protected] ') #字串加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()
最後執行結果如下:
開啟接受郵箱,看到如下收件資訊: