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一遍,若順利就會打勾囉






作者已經移除這則留言。
回覆刪除