前端測試自動化工具(一)

selenium

selenium 分爲好幾個系列 css

  • Selenium IDE
  • Selenium Server (formerly the Selenium RC Server)
  • Selenium Client & WebDriver Language Bindings

詳細的說明介紹在這裏 簡單來講, selenium ide 是 firefox 瀏覽器上的一款插件, 能夠記錄測試員的一系列操做, 並能夠根據要求生成一系列命令和特定的腳本程序html

(看我的喜愛). java

selenium rc 是用來運行selenium 腳本程序的..python

webdriver 的說明在這裏 git

selenium webdriver & python

開發人員本身要寫測試用例, 這是個很好的習慣..本人推薦python系列. windows 下安裝過程以下: web

  • python
  • setuptools , pip
  • pip install -U selenium
  • selenium-server-standalone-XXX.jar

本人安裝測試的時候折騰了很久, 不想讓你們也這樣折騰一次. 因此整理了下, 打了個包供你們下載. chrome

包內容以下: firefox , selenium-ide, chromedriver, iedriver, selenium-server-standalone-XXX.jar, pip, setuptools. windows

python的安裝, 請去官網上看說明. 另外個安裝說明在這裏 api

selenium+python文檔 瀏覽器

用例測試

以好康網的登錄過程爲例一系列流程下來, selenium ide 生成的命令以下:

而後能夠導出爲python rc 或者 python webdriver 腳本, 能夠手動修改腳本再運下.

python webdriver的版本以下:
   1:  from selenium import webdriver
   2:  from selenium.webdriver.common.by import By
   3:  from selenium.webdriver.support.ui import WebDriverWait
   4:  from selenium.common.exceptions import NoSuchElementException
   5:  import unittest, time, re
   6:   
   7:  class Login(unittest.TestCase):
   8:      def setUp(self):
   9:          self.driver = webdriver.Firefox()
  10:          self.driver.implicitly_wait(30)
  11:          self.base_url = "http://staging.fever38.com/"
  12:          self.verificationErrors = []
  13:          self.accept_next_alert = True
  14:   
  15:      def test_login(self):
  16:          driver = self.driver
  17:          driver.get(self.base_url + "/")
  18:          driver.find_element_by_css_selector("b.fb-login").click()
  19:   
  20:          driver.switch_to_window(driver.window_handles[-1])
  21:          WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("email"))
  22:          driver.find_element_by_id("email").clear()
  23:          driver.find_element_by_id("email").send_keys("your email")
  24:          driver.find_element_by_id("pass").clear()
  25:          driver.find_element_by_id("pass").send_keys("your password")
  26:          driver.find_element_by_id("persist_box").click()
  27:   
  28:   
  29:      def is_element_present(self, how, what):
  30:          try: self.driver.find_element(by=how, value=what)
  31:          except NoSuchElementException, e: return False
  32:          return True
  33:   
  34:      def is_alert_present(self):
  35:          try: self.driver.switch_to_alert()
  36:          except NoAlertPresentException, e: return False
  37:          return True
  38:   
  39:      def close_alert_and_get_its_text(self):
  40:          try:
  41:              alert = self.driver.switch_to_alert()
  42:              alert_text = alert.text
  43:              if self.accept_next_alert:
  44:                  alert.accept()
  45:              else:
  46:                  alert.dismiss()
  47:              return alert_text
  48:          finally: self.accept_next_alert = True
  49:   
  50:      def tearDown(self):
  51:          self.driver.quit()
  52:          self.assertEqual([], self.verificationErrors)
  53:   
  54:  if __name__ == "__main__":
  55:      unittest.main()
python selenium rc 的版本以下:
   1:  from selenium import selenium
   2:  import unittest, time, re
   3:   
   4:  class login2(unittest.TestCase):
   5:      def setUp(self):
   6:          self.verificationErrors = []
   7:          self.selenium = selenium("localhost", 4444, "*chrome", "http://staging.fever38.com/")
   8:          self.selenium.start()
   9:      
  10:      def test_login2(self):
  11:          sel = self.selenium
  12:          sel.open("/")
  13:          sel.click("css=b.fb-login")
  14:          sel.wait_for_pop_up("f3da5628edf910a", "30000")
  15:          sel.select_window("name=_e_0pS1")
  16:          sel.type("id=email", "your email")
  17:          sel.type("id=pass", "your password")
  18:          sel.click("id=persist_box")
  19:          sel.click("id=u_0_1")
  20:          sel.wait_for_page_to_load("30000")
  21:      
  22:      def tearDown(self):
  23:          self.selenium.stop()
  24:          self.assertEqual([], self.verificationErrors)
  25:   
  26:  if __name__ == "__main__":
  27:      unittest.main()

selenium-server 啓動

@echo on
cmd.exe /k "%1" java -jar e:\selenium-server-standalone-2.33.0.jar
相關文章
相關標籤/搜索