selenium入門教程c#


一、 簡述

1. 介紹

Selenium是ThoughtWorks專門為Web應用程序編寫的一個驗收測試工具。

Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE、 Mozilla FirefoxGoogle Chrome等。這個工具的主要功能包括:測試與瀏覽器的兼容性,測試系統功能。支持自動錄制動作和自動生成NetJavaPerl等不同語言的測試腳本。

 

2. 優勢

1. 更加逼真的模擬用戶操作網頁

2. 跨平台(Windows,Linux,mac,android,IOS) ,

3. 跨瀏覽器(Firefox,IE,Chrome, Opera,Safari) 

4. 多語言支持(java,c#,python,ruby,php,perl,js) 

5. 開源免費 

6. 綜上所述,selenium是可以個性定制的,可以適應不同團隊的,不要錢的自動化web測試工具 

3.  Selenium與QTP

共同特征

1. 都可以進行Web測試 

2. 都支持錄制回放 

3. 兩者錄制的腳本都有較差的兼容性,都需要有經驗的開發人員進行調整。 

QTP的優勢 

1. QTP 功能很完善,界面很強大。還對window等其他程序的支持 

2. QTP錄制功能強大,而Selenium IDE只是一個火狐插件,功能有限。 

3. QTP有對象庫,方便我們管理對象,而selenium只能進行編碼維護,或者自己編寫界面。 

4. QTP有非常優秀的測試報告,Selenium自己沒有,需要集成其他報表產品(比如結合JUnit) 

5. QTP對測試人員的要求低,Selenium不會編程能做的事情有限。     

Selenium的優勢

1. 用戶仿真:Selenium在瀏覽器后台執行,它通過修改HTMLDOM(文檔對象模型)來執行操作,實際上是通過 javascript來控制的。執行時窗口可以最小化,可以在同一機器執行多個測試。而QTP完全模擬終端用戶,獨占屏幕,只能開啟一個獨占的實例。 

2. Selenium一個機器可以跑多種腳本,但QTP獨占模式必須要大量測試機器。 

3. 瀏覽器支持。 Selenium支持IE, Firefox, SafariOpera,QTP僅支持IEFirefox。 

4. Selenium2 是完全面向對象的設計 ,讓開發者更加得心應手,QTP不是。 

5. Selenium可以用 javac#pythonrubyphpperlHTML,但是QTP只能使用VB來編寫。 

6. QTP只支持WindowsSelenium可以支持WindowsLinuxmacandroidIOS等。 

7. Selenium的開發環境由公司決定, QTP只能在自己的IDE中使用。 

8. QTP的代碼提示等功能太弱,加大初學者難度。

9. 最重要的是Selenium不要錢

      

 

4. 參考文檔

官網http://docs.seleniumhq.org/

幫助文檔http://docs.seleniumhq.org/docs/

5. Selenium版本介紹

• Selenium 主要分為 

     Selenium core:為selenium的核心部分,現在已經不單獨使用了; 

     Selenium RC(Selenium1):為上一代產品,現在已經被2代所取代; 

     Selenium IDE:是火狐上的錄制插件; 

     Selenium Grid(用於並發測試) ; 

     Selenium WebDriver(Selenium2) 

•  Selenium2已經包含了一代所有代碼,並實現了一些一代無法完成的功能,並具有面向對象,拓展性好等特點。 

 

 

二、 下載

1. Selenium 下載

1)進入官網下載http://www.seleniumhq.org/download/

2)[轉載]selenium入門教程c#

 

2. 其他下載

 

Firefox下載 http://firefox.com.cn/download/

Firebug下載:https://addons.mozilla.org/firefox/addon/1843

FirePath 下載 https://addons.mozilla.org/zh-CN/firefox/addon/firepath/

或者在火狐中下載

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#

 

 

 

 

三、 Selenium IDE的使用

1. 界面介紹

 

安裝好IDE后會在FF中工具選擇下有Selenium IDE的選項

點擊打開

[轉載]selenium入門教程c#

打開之后出現如下界面

[轉載]selenium入門教程c#

 

[轉載]selenium入門教程c#

以上

1填寫待測網站站點

2腳本的速度設置,執行暫停等

3錄制 默認是進入錄制狀態,點擊一下取消錄制

4測試腳本

5測試的代碼

6日志,消息等 

 

 

2. 關鍵設置

點擊options 

Format

 

如果出現: (want the formats back?click read more,這是無法把錄制的腳本轉換為其他語言的。請點擊options下面的options…進入如下設置界面

 

 

選擇標紅的選項,點擊確定。

出現以下選項為設置成功

 

 

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 使用舉例

 

[轉載]selenium入門教程c#

上圖標明了一些Selenium IDE的主要功能。其中,由CommandTargetValue組成的表格就是腳本,每個腳本都是由一條一條的Action(行為)組成,而每個 Action又由(CommandTargetValue)三者組成。Command就是動作,Target指的是Web中的某個對象,比如:文字,輸入框等等,,而Value就是這個對象的值。

 

 

    當彈出上面的IDE窗口后,我們就可以開始Selenium的腳本錄制了,右上角有個紅色的圓點,當它下按時(如上圖)就表示IDE正在進行腳本錄制。 OK,開始錄制,錄制的時候,直接操作Firefox瀏覽器窗口就可以了,IDE會自動記錄你的操作的,下面我演示一個例子:

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#

[轉載]selenium入門教程c#



 


 

上圖例子中,我的操作步驟如下:

(1).在地址欄輸入:http://www.baidu.com/

(2).登陸百度首頁后,在查詢框輸入“hyddd”。

(3).按“百度一下”按鈕

(4).進入搜索結果頁面后,右鍵單擊第一條記錄(即:hyddd - 博客園),在右鍵彈出菜單中,單擊“Verify TestPersent hyddd - 博客園”。

(5).單擊第一條記錄(即:進入hyddd - 博客園)

(6).Firefox彈出一個新Tab頁面,並進入了我的博客。

OK,現在看看我們的Selenium IDE錄制的結果吧:>


[轉載]selenium入門教程c#

    上圖中,中間的表格就是錄制的結果,你可以按“運行腳本”重新回放腳本看看,值得注意的是,在運行時,Firefox可能會認為腳本中最后一個操作(即: 步驟6)為非法彈出框,瀏覽器會自動阻止其彈出,這個需要設置一下Firefox,具體位置 是:Firefox->Menubar->Tools->options->content->Block pop-up Window,你可以把鈎去掉或者在Exceptions里面添加相應的網址。

    恩,到此為止,腳本錄制圓滿完成:>

   在運行腳本后,你會發現IDE表格的顏色發生了變化,運行前,腳本表格為白色,成功運行完畢后,表格為青色,其中還分為深青色和淺青色兩種,淺青色表示: 動作成功,如:打開網頁成功,點擊按鈕成功等等,而深青色表示:判斷正確,如:“hyddd - 博客園”這段文字在頁面中存在等等。 看完正確,現在我們看看出錯時的情況吧。

[轉載]selenium入門教程c#

出錯時,表格可能會出現兩種顏色,一種是淺粉紅色,一種是深粉紅色。淺粉紅色表示判斷結果為false,這種情況案例還是會繼續執行下去,判斷的失敗不會影響案例的運行,深粉紅色表示動作失敗,如:沒有找到按鈕等(如上圖),這種情況下案例會停止運行。

 

4. 代碼轉換

 

點擊以下可以轉化為對應語言的版本

[轉載]selenium入門教程c#

選擇 c#NUintWebDriver

[轉載]selenium入門教程c#

警告轉換為c#之后就不能再IDE中執行了

點擊確定 為以下c#代碼

 

 [轉載]selenium入門教程c#

 

可以復制一下代碼粘貼到vs中進行運行

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、 Selenium 在vs2010的編碼

1. 建立selenium測試項目

2. 編碼

 

 

[轉載]selenium入門教程c#

1創建一個項目,這兒我以控制台程序為例

2 下載selenium c#包 [selenium-dotnet-2.32.0.zip]並解壓

3增加引用

我是用的donet4.0所以選擇4.0的。

全選所有DLL文件,點擊OK

[轉載]selenium入門教程c#

 

項目引用會有如下文件

[轉載]selenium入門教程c#

復制IDE中代碼 修改之后就可以跑起來第一個selenium腳本了

 

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using OpenQA.Selenium;

using NUnit.Framework;

using OpenQA.Selenium.Firefox;

 

namespace ConsoleApplication1

{

    [TestFixture]

    class Program

    {

        static void Main(string[] args)

        {

            Program p = new Program();

            p.SetupTest();

            p.TheUntitledTest();

            p.TeardownTest();

 

        }

        private IWebDriver driver;

        private StringBuilder verificationErrors;

        private string baseURL;

        private bool acceptNextAlert = true;

 

        [SetUp]

        public void SetupTest()

        {

            driver = new FirefoxDriver();

            baseURL = "http://www.baidu.com/";

            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 TheUntitledTest()

        {

            driver.Navigate().GoToUrl(baseURL + "/");

            driver.FindElement(By.Id("kw")).Clear();

            driver.FindElement(By.Id("kw")).SendKeys("selenium");

            driver.FindElement(By.Id("su")).Click();

            driver.FindElement(By.Id("kw")).Clear();

            driver.FindElement(By.Id("kw")).SendKeys("selenium ideÌ?使º1®?");

            driver.FindElement(By.Id("su")).Click();

        }

        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;

            }

        }

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM