selenium入門教程c#

1、 簡述javascript

1. 介紹php

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

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

 

2. 優點python

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

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

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

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

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已經包含了一代全部代碼,並實現了一些一代沒法完成的功能,並具備面向對象,拓展性好等特色。 

 

 

2、 下載

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#

 

 

 

 

3、 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中進行運行

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4、 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;

            }

        }

    }

}

相關文章
相關標籤/搜索