Selenium最初是由一家位於美國芝加哥軟體公司ThoughtWorks在2004年所開發,作為JavaScrptTestRuner的核心。爾後一位日本人Shinya Kasatani對於Selenium相當感興趣,並且將它與Firefox結合實現擷取網頁行為作為驗證的工具
目前使用的方式分為三種 :
1. Selenium IDE
2. Selenium Remote Control
3. Selenium WebDriver
4. Selenium Grid
支援各種瀏覽器使用,詳細請參考Selenium下載頁面
這篇主要介紹IDE以及Remote Control C#
1. Selenium IDE
1. 安裝Firefox Selenium擴充套件
2. 兩個方法打開Selenium
(1) [工具] -> Selenium IDE
(2) Ctrl + Shift + s
3. 開啟後在Base URL填入受測網址 並點選紅點開始紀錄點選步驟
4. 在Google搜尋打上Germany 並按下搜尋 (注意不能使用鍵盤Enter鍵 否則Selenium無法紀錄)
5. 進入搜尋結果頁面後,可以假定我們要驗證是否會出現"德國"的字樣,將他框起來選擇Asserttext css=div.kno-ecr-pt.kno-fb-ctx 德國,選擇完後這一項驗證為最後一個步驟
6. 這時回頭看Selenium IDE它已經幫我們記錄剛剛所有的動作了,按Play Entire test suit按鈕Selenium會依照步驟再run一次
7. 這樣一個Test Case可以被轉成不同語言,在這選擇C# NUnit / Remote Control
輸出後會將每個步驟轉換成C# Code
[TestFixture] public class Example { private IWebDriver driver; private StringBuilder verificationErrors; private string baseURL; private bool acceptNextAlert = true; [SetUp] public void SetupTest() { driver = new FirefoxDriver(); baseURL = "http://localhost:23618/"; verificationErrors = new StringBuilder(); } [TearDown] public void TeardownTest() { try { driver.Quit(); } catch (Exception) { // Ignore errors if unable to close the browser } Assert.AreEqual("", verificationErrors.ToString()); } [Test] public void TheExampleTest() { driver.Navigate().GoToUrl(baseURL + "/index.aspx"); driver.FindElement(By.Id("money")).Clear(); driver.FindElement(By.Id("money")).SendKeys("1980"); driver.FindElement(By.Id("money")).Clear(); driver.FindElement(By.Id("money")).SendKeys("1980"); driver.FindElement(By.Id("dosomething")).Click(); driver.FindElement(By.Id("dosomething")).Click(); Assert.AreEqual("九折 : 1782", driver.FindElement(By.Id("90")).Text); } private bool IsElementPresent(By by) { try { driver.FindElement(by); return true; } catch (NoSuchElementException) { return false; } } private bool IsAlertPresent() { try { driver.SwitchTo().Alert(); return true; } catch (NoAlertPresentException) { return false; } } private string CloseAlertAndGetItsText() { try { IAlert alert = driver.SwitchTo().Alert(); string alertText = alert.Text; if (acceptNextAlert) { alert.Accept(); } else { alert.Dismiss(); } return alertText; } finally { acceptNextAlert = true; } } }
到這個步驟後,也許大家有些納悶要如何使用這C#的Code,它是沒辦法直接使用的,接著在同一個solution開啟測專案,並將匯出的檔案載入至專案中,接著開啟一個新的Unit test
將輸出的檔案擷取其中 [SetUp]與 [Test]放入到新增的[TestMethod]
[TestMethod] public void TheExampleTest() { driver = new FirefoxDriver(); baseURL = "http://kunyao.selenium/"; verificationErrors = new StringBuilder(); driver.Navigate().GoToUrl(baseURL + "/index.aspx"); driver.FindElement(By.Id("money")).Clear(); driver.FindElement(By.Id("money")).SendKeys("1980"); driver.FindElement(By.Id("money")).Clear(); driver.FindElement(By.Id("money")).SendKeys("1980"); driver.FindElement(By.Id("dosomething")).Click(); driver.FindElement(By.Id("dosomething")).Click(); Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual("九折 : 1782", driver.FindElement(By.Id("90")).Text); }開始run測試方案時會自動打開Firefox並照著指令run一遍,若順利就會打勾囉
作者已經移除這則留言。
回覆刪除