测试需求:
自动登录126邮箱,选择收件人,输入主题,输入正文,上传附件,发送
代码:
#encoding=utf-8 import time import unittest from selenium import webdriver from selenium.common.exceptions import TimeoutException class login163MailByIe(unittest.TestCase): def setUp(self): #启动浏览器 self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer") def test_login_sendMail(self): url = "http://mail.163.com" #设置页面加载限制时间为10秒 self.driver.set_page_load_timeout(10) #窗口最大化 self.driver.maximize_window() try: stime = time.time() #访问163首页 self.driver.get(url) except TimeoutException,e: print u"页面加载超过设定时间,超时" #当页面加载时间超过设定时间,通过执行javascript来停止加载,然后继续执行后续动作 self.driver.execute_script("window.stop()") end = time.time() - stime print end #点击切换成账号密码登录 self.driver.find_element_by_xpath('//div[@id="lbNormal"]').click() #找到并切换进iframe控件 # 目前126和163登录的iframe的id也是动态变化,所以不能用id定位iframe #使用各种xpath定位表达式,在浏览器中可以成功定位,但Pycharm中一直报错(NoSuchElementException),只成功过执行一次 iframe = self.driver.find_element_by_xpath('//iframe[contains(@id,"x-URS-iframe")]') self.driver.switch_to.frame(iframe) #获取用户名输入框 userName = self.driver.find_element_by_xpath("//input[@name='email']") userName.clear() userName.send_keys("xxx") #获取密码输入框 pwd = self.driver.find_element_by_xpath("//input[@name='password']") #输入密码 pwd.send_keys("xxx") #点击登录按钮 self.driver.find_element_by_id("dologin").click() time.sleep(2) # 断言登录成功 self.assertTrue(u"退出" in self.driver.page_source) #找到“写信”按钮 writeBtn = self.driver.find_element_by_xpath('//span[text()="写 信"]') #点击“写信”按钮 writeBtn.click() #找到收件人输入框 recipient = self.driver.find_element_by_xpath('//input[@aria-label="收件人地址输入框,请输入邮件地址,多人时地址请以分号隔开"]') #输入收件人邮箱 recipient.send_keys("124840093@qq.com") #找到主题输入框 subject = self.driver.find_element_by_xpath('//input[contains(@id,"_subjectInput")]') #输入邮件主题 subject.send_keys(u"测试发送邮件") #找到上传附件按钮 fileBtn = self.driver.find_element_by_xpath('//input[@type="file"]') #选择目标文件 fileBtn.send_keys("D:\test\test.txt") #正文富文本杠在一个iframe里面,先定位iframe,进入iframe后再定位富文本框 #找到iframe并进入 self.driver.switch_to.frame(self.driver.find_element_by_xpath('//iframe[@tabindex="1"]')) #找到富文本框并输入内容 self.driver.execute_script("document.getElementsByTagName('body')[0].innerHTML='<b>邮件正文内容</b>;'") #进入iframe后,需要退出 self.driver.switch_to.default_content() #找到发送按钮 sendBtn = self.driver.find_element_by_xpath('//footer//span[text()="发送"]') #点击发送按钮 sendBtn.click() time.sleep(5) #断言发送成功 assert u"发送成功" in self.driver.page_source def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main()