1. 程式人生 > >整合C#測試框架和Selenium對於Web系統實現自動化測試

整合C#測試框架和Selenium對於Web系統實現自動化測試

系統環境:
軟體需求: Visual C# 2010,Mozilla Firefox,Selenium
硬體需求: Pentium III 450以上的CPU處理器,64MB以上的記憶體,200MB的自由硬碟空間
內容簡介:
1. 利用Spy++進行Windows物件識別,查詢Windows計算器中的3類不同的物件,列出這些物件的常規屬性。
2. 利用Selenium測試指令碼錄製以下操作:
(1) 在Firefox位址列中輸入淘寶網主頁網址http://www.taobao.com/,回車載入網頁;
(2) 點選“搜尋”旁邊的“店鋪”;
(3) 在搜尋欄中輸入“考拉”,點選“搜尋”按鈕;
(4) 滑鼠右鍵點選連結“考拉一家”,在彈出選單中點選“verifyElementPresent link=考拉一家”;
(5) 點選“考拉一家”左邊的圖片,進入該網頁。
(6) 結束指令碼錄製。
3. 利用C#測試框架和NUNIT測試框架,實現自動化測試,測試和回放實驗內容第2項中的指令碼。

實施過程
(1) 用selenium錄製相應指令碼,要將所有selectwindows選項的target選項設為null,指令碼執行成功後作為C#語言匯出
原始碼如下

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;

namespace SeleniumTests
{
[TestFixture]
public class 77777
{
private ISelenium selenium;
private
StringBuilder verificationErrors; [SetUp] public void SetupTest() { selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://www.taobao.com/"); selenium.Start(); verificationErrors = new StringBuilder(); } [TearDown] public void TeardownTest() { try { selenium.Stop(); } catch (Exception) { // Ignore errors if unable to close the browser
} Assert.AreEqual("", verificationErrors.ToString()); } [Test] public void The77777Test() { selenium.Open("/"); selenium.Click("css=li.J_SearchTab.shop-search-tab"); selenium.Click("id=q"); selenium.Type("id=q", "考拉"); selenium.Click("css=button.btn-search"); selenium.WaitForPageToLoad("30000"); selenium.SelectWindow("null"); try { Assert.IsTrue(selenium.IsElementPresent("link=考拉一家")); } catch (AssertionException e) { verificationErrors.Append(e.Message); } selenium.SelectWindow("null"); selenium.Click("css=img"); } } }

(2) 新建VS中C#測試專案,在類中匯入ThoughtWorks.Selenium.Core.dll,新增相應標頭檔案後將程式碼修改如下

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading;
using Selenium;
using System.Linq;


namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            ISelenium selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://www.taobao.com/");
            selenium.Start();
            //verificationErrors = new StringBuilder();
            selenium.Open("/");
            selenium.Click("css=li.J_SearchTab.shop-search-tab");
            selenium.Click("id=q");
            selenium.Type("id=q", "考拉");
            selenium.Click("css=button.btn-search");
            selenium.WaitForPageToLoad("30000");
            selenium.SelectWindow("null");
            Assert.IsTrue(selenium.IsElementPresent("link=考拉一家"));
            selenium.SelectWindow("null");
            Thread.Sleep(5000);
            selenium.Click("css=img");
            Thread.Sleep(5000);
            selenium.Close();
            selenium.Stop();
        }
    }
}

(3) 開啟 cmd 進入 selenium-server-1.0-beta-2目錄,輸入“java -jar selenium-server.jar”,啟動 Selenium測試伺服器
在測試專案中執行測試。
(4) 對於NUNIT的測試框架,在VS中新建C#控制檯程式專案,匯入nunit.framework和ThoughtWorks.Selenium.Core的類庫檔案,然後在主函式外新增三種C#指令碼程式碼中的方法,並在主函式中呼叫。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Selenium;
using NUnit.Framework;
using System.Threading;

namespace ConsoleApplication2
{
    //[TestFixture]
    public class SeleniumTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Program p = new Program();
                p.SetupTest();
                p.TheSeleniumTest();
                Thread.Sleep(500);
                p.TeardownTest();
            }
            private ISelenium selenium;
            private StringBuilder verificationErrors;
            //[SetUp]
            public void SetupTest()
            {
                selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://www.taobao.com/");
                selenium.Start();
                verificationErrors = new StringBuilder();
            }

            //[TearDown]
            public void TeardownTest()
            {
                try
                {
                    Thread.Sleep(500);
                    selenium.Stop();
                }
                catch (Exception)
                {
                    // Ignore errors if unable to close the browser
                }
                Assert.AreEqual("", verificationErrors.ToString());
            }

            //[Test]
            public void TheSeleniumTest()
            {
                selenium.Open("/");
                selenium.Click("css=li.J_SearchTab.shop-search-tab");
                selenium.Type("id=q", "考拉");
                selenium.Click("css=button.btn-search");
                selenium.WaitForPageToLoad("30000");
                selenium.SelectWindow("null");
                try
                {
                    Assert.IsTrue(selenium.IsElementPresent("link=考拉一家"));
                }
                catch (AssertionException e)
                {
                    verificationErrors.Append(e.Message);
                }
                selenium.SelectWindow("null");
                selenium.Click("link=考拉一家");
            }
        }
    }
}

(5)同理先啟動伺服器,然後將專案啟動,完成測試

總結:自動化測試是單元測試、整合乃至系統測試的實際操作方式中運用很廣泛的一種,因為現實中因為測試用例量太大,測試工作繁瑣或者系統規模過大不得不開發出自動化測試的理論和技術。在測試過程中,最困難的步驟是指令碼轉化為程式碼再結合到測試專案中,對於VS測試框架,需要用指令碼程式碼中代表核心操作的部分新增到測試類中,並注意不要引入NUNIT框架;對於NUNIT測試專案,需要多匯入一個nunit.framework.dll引入框架,測試時啟動專案而非執行測試。本測試過程中需要注意標頭檔案的引入正確,啟動伺服器時埠不能被佔用,而且相關的jar包必須是版本符合要求,不然伺服器會報異常。整個系統的邏輯是將測試指令碼嵌入測試程式碼中,通過selenium sever伺服器連線指令碼、瀏覽器和selenium外掛,實現指令碼在框架中接受測試並通過瀏覽器執行。

相關推薦

整合C#測試框架Selenium對於Web系統實現自動化測試

系統環境: 軟體需求: Visual C# 2010,Mozilla Firefox,Selenium 硬體需求: Pentium III 450以上的CPU處理器,64MB以上的記憶體,200MB的自由硬碟空間 內容簡介: 1. 利用Spy++進行W

Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次 由於在對WEB系統進行自動化測試的過程中,經常會由於

Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次 由於在對WEB系統進行自動化測試的過程中,經常會由於握手連線斷開等原因導致HTTP請求傳送失敗,如果重新執行一次,會是成功的。在每天的自動

python selenium實現web UI功能自動化測試框架(米兔888)

之前分享了python和requests搭配實現的介面自動化測試框架,今天,我再來整理分析下基於python和selenium的web UI自動化測試,希望能對大家有所幫助,也是自己整理知識學習的方法,跟大家一起努力,奮鬥在自動化測試的道路上。其實UI自動化和介面自動化框架的

四、利用SeimiCrawler爬蟲框架selenium自動化測試工具分別實現對網站的爬取

一、案例背景   這裡為了簡化操作,我們以爬取 http://www.fzdm.com/ 網頁的熱門漫畫為例。 二、對比   SeimiCrawler爬蟲框架 爬取速度較快,但是不穩定(表現線上程一多,易崩潰);selenium自動化測試工具 爬取速度略慢,但是穩定。 三、方式一:S

值得推薦的C/C++開源框架

跨語言 return .net npr 粘貼 python3.x xcod nasm pop 值得推薦的C/C++開源框架和庫 轉自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webb

【轉】自動化測試框架: pytest&allure ,提高自動化健壯性穩定性

序 在之前,我寫過一個系列“從零開始搭建一個簡單的ui自動化測試框架(pytest+selenium+allure)”,在這個系列裡,主要介紹瞭如何從零開始去搭建一個可用的自動化工程框架,但是還缺乏了一些細節的補充,例如對於自動化測試而言,如何提高其測試的穩定性? 本篇文章,將會和讀者一起探討這個

搭建一個 c# + selenium + winform + 谷歌瀏覽器 -- 自動化測試環境

搭建一個 c# + selenium + winform + 谷歌瀏覽器 – 自動化測試環境 1、需要環境 Visual Studio 2017 winformapp 測試應用 .net 4.5 windows 10 谷歌瀏覽器 2、wi

搭建基於IDEA+Selenium+Java+TestNG+Maven+Jenkins+SVN的Web端UI自動化測試環境

第一步:工具下載安裝配置 第二步:整合各個工具到自動化測試環境 1.IDEA上的各種操作 a.通過在idea工具,新建一個maven專案,在右邊載入框這裡,選擇maven-archetype-quickstart,然後點選next b.輸入Group Id:域.公司簡稱;Artifact Id:專案名稱

推薦 C/C++ 人工智慧 框架

值得推薦的C/C++框架和庫 C++資源大全 關於 C++ 框架、庫和資源的一些彙總列表,內容包括:標準庫、Web應用框架、人工智慧、資料庫、圖片處理、機器學習、日誌、程式碼分析等。 標準庫 C++標準庫,包括了STL容器,演算法和函式等。 C++通用框

JAVA 程式設計師需要用到 10 個測試框架

想要提高你的自動化測試技術?以下是 10 個優秀的測試框架和庫,以及它們常見用法的概述。 最近我寫了一些文章,關於 Java 程式設計師今年應該學習什麼,例如程式語言,庫和框架等,如果只能學習或提高其中一項,那必然是自動化測試技能。 測試是專業程式設計師區別於業餘程式設計師的一項指標,作為專業程式設計師,並

Gtest:死亡測試 玩轉Google開源C++單元測試框架Google Test系列(gtest)之五 - 死亡測試

轉自:玩轉Google開源C++單元測試框架Google Test系列(gtest)之五 - 死亡測試 一、前言 “死亡測試”名字比較恐怖,這裡的“死亡”指的的是程式的崩潰。通常在測試過程中,我們需要考慮各種各樣的輸入,有的輸入可能直接導致程式崩潰,這時我們就需要檢查程式是否按照預期的方式掛掉,這也就是所

scrapy爬蟲框架selenium的配合使用

linux 觸發事件 pos ... 進行 系統 技術分享 6.0 觀察 scrapy框架的請求流程   scrapy框架?   Scrapy 是基於twisted框架開發而來,twisted是一個流行的事件驅動的python網絡框架。因此Scrapy使用了一種非阻塞(

使用Golang的Gin框架vue編寫web應用

背景: 之前使用Golang的Gin框架進行一些運維內部後端的API介面開發,對外提供提供json型別的資料響應,但是該種方式在

Python Selenium unittest+HTMLTestRunner實現 自動化測試及發送測試報告郵件

dir span 情況 smt imp pen port 介紹 sleep 1、UI測試框架搭建-目錄結構 2、 文件介紹 2.1、baseinfo->__init__.py 配置文件定義基礎參數 #-*-coding:utf-8-*

快速入門web接口自動化測試---知識與思想準備階段(一)

重要 請求 協議 工具 簡單 目標 多說 tro font 剛換了工作,老板要求我搞接口自動化,可是之前完全沒有搞過,怎麽辦?怎麽辦?答:先把B裝下了,然後學!個人感覺,這是在工作提升自己的最好方式,嘻嘻,鄙人在這裏以日記的形式,記錄自己作為一個技術渣,點點滴滴

IE11,Chrome65.0.3325.146,Firefox58的webdriver驅動下載,並用selenium驅動來實現自動化測試

ogl mage ima api 鏈接 AD idt 技術分享 image 各瀏覽器版本: python版本: selenium版本: IE11的Webdriver下載:   http://dl.pconline.com.cn/download/771640-

基於gin框架jwt-go中間件實現小程序用戶登陸token驗證

expires 微信 處理 如果 .net local 切入點 小程序 err 本文核心內容是利用jwt-go中間件來開發golang webapi用戶登陸模塊的token下發和驗證,小程序登陸功能只是一個切入點,這套邏輯同樣適用於其他客戶端的登陸處理。 小程序登陸邏輯

REST API 自動化測試 利器Rest Assured(API接口自動化測試框架體系)

系統 網站 中文 load bsp acl ava download ext 現在,越來越多的 Web 應用轉向了 RESTful 的架構,很多產品和應用暴露給用戶的往往就是一組 REST API,這樣有一個好處,用戶可以根據需要,調用不同的 API,整合出自己的應用出來。

測試框架httpclent 4.HttpClient Post方法實現

dal div 獲取 import pri 頭信息 結果 content color startupWithCookies.json [ { "description":"這是一個會返回cookies信息的get請求", "request":{

Selenium+python】實現自動化測試前期準備

一、系統環境:Windows 10 + Python 3.6 + Selenium 3.4 + Chrome 59 + Pycharm 二、安裝Python: 1、Downloads:https://www.python.org/,開啟官網,在Downloads下,選擇作業系統,我的環境是W