首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0024. C# Selenium 模擬人類行為,進行自動登入功能(自動化測試)

日期:2018年 09月 25日

標籤: C# Web Html ASP.NET Framework Windows Forms Selenium

摘要:C# 學習筆記


環境: Visual Studio 2017 C#
目的: 認識Selenium 自動化工具在C#中的實現
應用: 自動進行登入網站
Github:下載
DEMO影片:Youtube
基本介紹:本篇分為3大部分。
第一部分:C# Selenium 安裝
第二部分:C# 程式碼架構
第三部分:DEMO 自動登入,達到自動化測試應用






第一部分:C# Selenium 安裝

Step 1: 套件安裝-1

新增專案 -> 管理Nuget套件
補充描述


Step 2: 套件安裝-2

瀏覽 -> 安裝以下:
1. Selenium.WebDriver
2. Selenium.Chrome.WebDrier (※我們要使用Chrome )




第二部分:C# 程式碼架構

Step 1:目標測試網頁

https://louislinebot.azurewebsites.net/Login


Step 2: 完整程式碼

實作一個Function ,進行Selenium 的呼叫程式自動登入,完整程式如下:
1. Selenium.WebDriver
2. Selenium.Chrome.WebDrier (※我們要使用Chrome )

/// <summary>
/// 進行登入
/// </summary>
public void Login()
{
    IWebDriver driver = new ChromeDriver();
    //開啟網頁
    driver.Navigate().GoToUrl(_url);
    //隱式等待 - 直到畫面跑出資料才往下執行
    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10000);

    //輸入帳號
    IWebElement inputAccount = driver.FindElement(By.Name("Account"));
    Thread.Sleep(2000);
    //清除按鈕
    inputAccount.Clear();
    Thread.Sleep(2000);
    inputAccount.SendKeys("20180513");
    Thread.Sleep(2000);

    //輸入密碼
    IWebElement inputPassword = driver.FindElement(By.Name("Passwrod"));

    inputPassword.Clear();
    Thread.Sleep(2000);
    inputPassword.SendKeys("123456");
    Thread.Sleep(2000);

    //點擊執行
    IWebElement submitButton= driver.FindElement(By.XPath("/html/body/div[2]/form/table/tbody/tr[4]/td[2]/input"));
    Thread.Sleep(2000);
    submitButton.Click();
    Thread.Sleep(2000);

    driver.Quit();
}



Step 3: 使用Selenium Driver

呼叫Selenium Driver ,使用ChromeDriver()

IWebDriver driver = new ChromeDriver();
//開啟網頁
driver.Navigate().GoToUrl(_url);
//隱式等待 - 直到畫面跑出資料才往下執行
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10000);



Step 4: 找出網頁上帳號的元素

找出頁面的【帳號】輸入位置 TextBox ※ Dom元件的 Id = Account

//輸入帳號
IWebElement inputAccount = driver.FindElement(By.Name("Account"));
Thread.Sleep(2000);
//清除按鈕
inputAccount.Clear();
Thread.Sleep(2000);
inputAccount.SendKeys("20180513");
Thread.Sleep(2000);



Step 5: 找出網頁上密碼的元素

找出頁面的【密碼】輸入位置 TextBox ※ Dom元件的Id = Password

//輸入密碼
IWebElement inputPassword = driver.FindElement(By.Name("Passwrod"));
inputPassword.Clear();
Thread.Sleep(2000);
inputPassword.SendKeys("123456");
Thread.Sleep(2000);



Step 6: 找出網頁上送出按鈕的元素

找出頁面的【submit】按鈕 ,並且點擊他

//點擊執行
IWebElement submitButton= driver.FindElement(By.XPath("/html/body/div[2]/form/table/tbody/tr[4]/td[2]/input"));
Thread.Sleep(2000);
submitButton.Click();
Thread.Sleep(2000);



Step 7: 代碼收尾

增加關閉代碼,避免下次開啟執行失敗

//點擊執行
IWebElement submitButton= driver.FindElement(By.XPath("/html/body/div[2]/form/table/tbody/tr[4]/td[2]/input"));
Thread.Sleep(2000);
submitButton.Click();
Thread.Sleep(2000);





第三部分:DEMO 自動登入,達到自動化測試應用

Step 1: 執行畫面 (可參考影片)

影片DEMO連結 Youtube