學習了Python語言一段時間后,在公司的項目里也使用到了python來寫測試腳本,一些重復的操作都使用腳本來處理了。大大的提高工作效率,減少了一些手工重復的操作。
以下是使用unittest框架寫的簡單的郵箱自動登錄實例,分享給大家,有不足之處可留言交流。
由於QQ郵箱登錄的頁面使用iFrame的設計,在開始寫的時候因為找不到切換的方法,導致代碼老是報錯。
driver.switch_to.frame("login_frame")
在打開QQ郵箱首頁后,需要先切換到login_frame的框里才可以進入輸入帳號密碼登錄操作。
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #Author:Vincent Lan 4 import unittest,time 5 from selenium import webdriver 6 from selenium.webdriver.common.keys import Keys 7 8 9 class QQ_mail(unittest.TestCase): 10 def setUp(self): 11 self.driver = webdriver.Firefox() 12 self.driver.implicitly_wait(30) 13 self.base_url = "https://mail.qq.com" 14 self.verificationErrors = [] 15 self.accept_next_alert = True 16 print("正在訪問QQ郵箱") 17 18 19 def test_mail_login(self): 20 """QQ郵箱登錄""" 21 driver = self.driver 22 driver.maximize_window() 23 driver.get(self.base_url + "/") 24 25 driver.switch_to.frame("login_frame") 26 driver.find_element_by_id("switcher_plogin").click() 27 28 29 driver.find_element_by_id("u").clear() 30 driver.find_element_by_id("u").send_keys("yourmailadd") 31 32 driver.find_element_by_id("p").clear() 33 driver.find_element_by_id("p").send_keys("your password") 34 35 driver.find_element_by_id("p").send_keys(Keys.ENTER) 36 #driver.find_element_by_id("login_button").click() 37 print("登錄QQ郵箱成功") 38 39 """ 40 def tearDown(self): 41 self.driver.quit() 42 self.assertEqual([], self.verificationErrors) 43 """ 44 if __name__ == "__main__": 45 unittest.main()
如果登錄后不需要自動關閉網頁就要把def tearDown(self)注釋掉。這樣就可以查看郵件或編寫郵件了。
1 """ 2 def tearDown(self): 3 self.driver.quit() 4 self.assertEqual([], self.verificationErrors) 5 """
針對初學者的建議:python注重語句的優美,對縮進和換行都很嚴格,稍有不對齊的縮進都會報錯。所以要注意了。