自動化測試程式如何將瀏覽器種類視為外部參數同時執行IE, Chrome, Firefox? (python範例)

自動化測試程式如何將瀏覽器種類視為外部參數同時執行IE, Chrome, Firefox? (python範例)

這篇文章主要說明當完成一個自動化測試程式時,如何根據需要指定不同的參數,

讓這個自動化測試程式可以執行 IE、Chrome或是FireFox,而不需要修改程式。

要達到這個目的,自動化測試程式必須將啟動瀏覽器的部分做參數化。

最後,舉 python 為程式範例說明。另外附上python unitTest的用法。

測試情境

我們將完成一個測試程式,這個測試程式會 –

1. 訪問 http://www.python.org

2. 搜尋 “Selenium”

3. 驗證 Window Title

執行時,可以用外部參數,firefox或是 Chrome就會啟動相對應的瀏覽器

$python    multipleBrowser.py    firefox

$python    multipleBrowser.py    chrome

 

程式說明

python程式如何讀外部參數?

這個程式我們利用外部參數,來判斷是否要啟動 firefox or chrome

BROWSER = sys.argv[1]

 

測試個案與瀏覽器環境準備

我們必須相測試步驟分為兩大部分。

一部分是瀏覽器環境的準備。也就是根據參數執行相對應的瀏覽器。FireFox or Chrome

  • def test_firefox():
  • def test_chrome():

一部分是測試步驟。也就是我們要執行的測試個案。這個例子主要是瀏覽網站與驗證網頁資訊。

  • def test_searchResults(driver):

因此,在每次的瀏覽器環境準備結束後,我們都會執行相對應的測試個案。test_searchResults。

Python UnitTest完整程式範例

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import unittest, time, re, sys
import os
import unittest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

class multipleBrowser_unittests(unittest.TestCase):
    args = sys.argv[1].split(" ")
    def setUp(self):
        args = self.args
        if args[0].lower() == "firefox":
            self.driver = webdriver.Firefox()
        else:
            self.driver = webdriver.Chrome("D:\\Python27\\chromedriver.exe")

        self.load = self.driver.get

    def tearDown(self):
        if self.driver:
            self.driver.quit()

    def test_should_load_wikipedia(self):
        self.load("https://www.wikipedia.org")
        self.assertIn("Wikipedia", self.driver.title)

if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main(argv=sys.argv[1:])

[/pastacode]

Python完整程式範例

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]


from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import sys

CHROME_DRIVER_LOCATION = "D:\\Python27\\chromedriver.exe"
TEST_URL = "http://www.python.org"


def test_chrome():
    print "setting up CHROME"
    chromedriver = CHROME_DRIVER_LOCATION
    os.environ["webdriver.chrome.driver"] = chromedriver
    driver = webdriver.Chrome(chromedriver)
    driver.get(TEST_URL)
    test_searchResults(driver)


def test_firefox():
    print "setting up FIREFOX"
    driver = webdriver.Firefox()
    driver.get(TEST_URL)
    test_searchResults(driver)


def test_searchResults(driver):
    assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.send_keys("selenium")
    elem.send_keys(Keys.RETURN)
    assert "Welcome" in driver.title
    driver.close()

    print "Closed driver and finished"


if __name__ == '__main__':

    NUMARGUMENTS = len(sys.argv)
    BROWSER = "firefox"

    print str(sys.argv)

    if(NUMARGUMENTS == 2):
        BROWSER = sys.argv[1]
        BROWSER = str(BROWSER).lower()

        if BROWSER == "firefox":
            test_firefox()
        elif BROWSER == "chrome":
            test_chrome()
        else:
            print "The parameter only takes 'firefox' or 'chrome'. \nCan't identify the browser: " + BROWSER
    else:
        print "It only takes one parameter either 'firefox' or 'chrome' "

[/pastacode]

Leave a Reply

Your email address will not be published. Required fields are marked *