qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          安裝并引用Selenium 2—Selenium自動化測試指南(1)

          (51Testing軟件測試網獲人民郵電出版社和作者授權連載本書部分章節。任何個人或單位未獲得明確的書面許可,不得對本文內容復制、轉載或進行鏡像,否則將追究法律責任。)

            第5章 Selenium 2(WebDriver)

            Selenium 2(即WebDriver)是一種用于Web應用程序的自動測試工具,它提供了一套友好的API,與Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可讀性和可維護性也大大提高。Selenium 2完全就是一套類庫,不依賴于任何測試框架,不需要啟動其它進程或安裝其它程序,也不必像Selenium 1那樣需要先啟動服務。

            另外,二者所采用的技術方案也不同。Selenium 1是在瀏覽器中運行JavaScript來進行測試,而Selenium 2則是通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器。

            Selenium 2針對各個瀏覽器而開發的,它取代了嵌入到被測Web應用中的JavaScript。與瀏覽器的緊密集成,支持創建更高級的測試,避免了JavaScript安全模型的限制。除了來自瀏覽器廠商的支持,Selenium 2還利用操作系統級的調用模擬用戶輸入。WebDriver支持Firefox(FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)和Chrome (ChromeDriver)瀏覽器。對Safari的支持由于技術限制在本版本中未包含,但是可以使用SeleneseCommandExecutor模擬。它還支持Android(AndroidDriver)和iPhone(IPhoneDriver)的移動應用測試。此外,Selenium 2還包括一個基于HtmlUnit的無界面實現,稱為HtmlUnitDriver。Selenium 2 API可以通過PythonRuby、Java和C#等編程語言訪問,支持開發人員使用他們常用的編程語言來創建測試。

            但是,我們不能簡單的從版本號就判定Selenium 2比Selenium 1更加先進。嚴格地說,它們完全屬于兩個不同的產品而不是簡單的升級關系,更像是互補關系。它們之間各有優劣:Selenium 2可以彌補Selenium 1存在的缺點(例如能夠繞過JS限制、API更易使用),而Selenium 1也可以解決Selenium 2存在的問題(例如支持更多的瀏覽器)。

            5.1  Selenium 2——基于對象的測試

            為什么說Selenium 2是基于對象的測試呢?可以對Selenium 1和Selenium 2的代碼進行一下對比,同樣是實現系統登錄這種簡單的操作,它們的代碼卻各有不同,如程序清單5-1和程序清單5-2所示。

            程序清單5-1  Selenium 1的代碼

          static void Main(string[] args)
          {
          //實例化Selenium1對象
          ISelenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", http://www.360buy.com);
          selenium.Start();
          //打開京東登錄頁面
          selenium.Open("https://passport.360buy.com/new/login.aspx");
          //填寫符合xpath的用戶名文本框、密碼文本框,單擊登錄
          selenium.TypeKeys(@"http://input[@id='loginname']", "UserName1");
          selenium.TypeKeys(@"http://input[@id='loginpwd']", "Password");
          selenium.Click(@"http://input[@id='loginsubmit']");
          }

             程序清單5-2  Selenium 2的代碼

          static void Main(string[] args)
          {
          //實例化Selenium2對象
          IWebDriver driver = new FirefoxDriver();
          //打開京東登錄頁面
          INavigation navigation = driver.Navigate();
          navigation.GoToUrl(https://passport.360buy.com/new/login.aspx);
          //分別獲取用戶名文本框,密碼文本框,登錄按鈕
          IWebElement loginName = driver.FindElement(By.Id("loginname"));
          IWebElement loginPwd = driver.FindElement(By.Id("loginpwd"));
          IWebElement loginButton = driver.FindElement(By.Id("loginsubmit"));
          //輸入用戶名,密碼,單擊登錄
          loginName.SendKeys("UserName1");
          loginPwd.SendKeys("Password");
          loginButton.Click();
          }

            可以看到Selenium 2與Selenium 1存在很明顯的差異。盡管它們都屬于瀏覽器自動化的API,但對于用戶來說,Selenium 1提供的更多的是基于方法的API,所有方法都在一個類中開放,而Selenium 2的API則面向對象,不同的對象擁有不同的操作方法。


            5.2  安裝并引用Selenium 2

            Selenium 2的下載地址為:http://seleniumhq.org/download/,位于“Selenium Client Drivers”欄,選擇使用的編程語言版本下載即可,這些包中同時包含了Selenium 1和Selenium 2的文件,如圖5-1所示。

            圖5-1  下載Selenium 1

            由于在本書中的Selenium示例都將采用C#或Java編寫,因此需要至少掌握C#或Java中的一種語言。如果您是C#或Java的初學者,可以先在網上參閱相關的資料。

            接下來分別介紹如何在C#和Java的 IDE環境中進行使用并創建程序。

            5.2.1  在C#IDE中使用Selenium C#

            下載之后進行解壓,可以看到兩個不同的文件夾,一個是.Net 3.5版本,另一個是.Net 4.0,可以根據自己的版本進行選擇,然后進入對應版本的文件夾,如圖5-2所示。

            圖5-2  Selenium .Net類庫

            接下來分別介紹部分文件的作用。

            Castle.Core.dll:Castle的核心,它是個輕量級容器,實現了IoC(Inversion of Control)模式的容器,基于此核心容器所建立的應用程序,可以達到程序組件的松散耦合,讓程序組件可以進行驗證,這些特性使得可以簡化整個應用程序的架構,并且使得易于維護此文件與測試的關系不大。

            Ionic.Zip.dll:用于壓縮和解壓的庫文件,可以把文件壓縮成WinZip格式,也可以從該格式中解壓。此文件與測試的關系不大。

            Selenium.WebDriverBackedSelenium.dll:通過這個類庫,可以實現用Selenium 1的語法來執行Selenium 2。這是一種過渡性方案,基本是針對老的Selenium 1代碼,讓它們以最小的代價遷移到Selenium 2去。

            ThoughtWorks.Selenium.Core.dll:Selenium 1的主要API文件,在使用Selenium 1自動化測試時就靠這個類庫來實現。

            WebDriver.dll:Selenium 2的主要API文件,在使用Selenium 2進行自動化測試時主要就靠這個類庫來實現。它是本章關注的重點。

            WebDriver.Support.dll:WebDriver支持類,起輔助作用。其中包含一些HTML元素選擇、條件等待、頁面對象創建等的輔助類。本章將對其進行詳細介紹。

            至于.pdb類型的程序數據庫文件,一般用于dll文件的調試,與Selenium 測試本身沒多大關系。而.xml文件則是各個dll文件的API參考文檔,應該仔細研究。

            C#編程使用的是Visual Studio,Visual Studio 2010的下載地址是:

            http://www.microsoft.com/visualstudio/zh-cn/download

            關于Visual Studio的安裝,可參見:

            http://www.cnblogs.com/eastson/archive/2012/05/30/2525831.html

          安裝結束后,打開Visual Studio,然后選擇“新建”→“項目”菜單命令,如圖5-3所示。

            圖5-3  選擇“新建C#項目1”菜單命令

            在彈出的“新建項目”對話框中選擇“控制臺應用程序”,如圖5-4所示。

            圖5-4 “新建項目”對話框

            創建完畢后,將打開新建立的項目,可以看到默認創建了一個名為Program.CS的類文件,如圖5-5所示。

                  圖5-5  默認創建的Program.CS類文件

            在解決方案資源管理器中,用鼠標右鍵單擊“引用”,選擇“添加引用”,如圖5-6所示。

            打開“添加引用”窗口,選擇與WebDriver相關的dll文件,單擊“確定”按鈕,如圖5-7所示。

                       

            圖5-6 “添加引用”命令                             圖5-7  選擇相關的.dll文件


           在解決方案資源管理器中可看到該引用,如圖5-8所示。

            然后在main函數中輸入如圖5-9中所示的代碼,然后按F5執行。

                           

            圖5-8  添加引用3                                   圖5-9  C#代碼

            運行結果如圖5-10所示。

            在本章中的C#程序都可按照這種方式進行創建。

            圖5-10  C#運行結果

            5.2.2  在Java IDE中使用Selenium

            下載之后進行解壓,可以看到如圖5-12所示的內容。

            這些文件和文件夾的作用如下。

            Libs文件夾:其中包含各種Java相關的基礎框架。

            CHANGELOG:記錄了Selenium的變更情況,可以用記事本將其打開閱讀。

            Selenium-java-2.25.0.jar:Selenium 1和Selenium 2的主要API文件,在進行自動化測試時主要就靠這個類庫來實現。

            Selenium-java-2.25.0-srcs.jar:Selenium的部分源碼,感興趣的讀者可以仔細研究。

            運行Java程序和Selenium 服務器都需要先安裝JDK,JDK的下載地址為:

            http://www.oracle.com/technetwork/java/javase/downloads/index.html

            注意下載時要選擇對應的操作系統版本,下載后直接單擊“下一步”按鈕安裝即可。

            然后安裝Eclipse,下載地址是:

            http://www.eclipse.org/downloads/

            下載Eclipse Classic,然后解壓即可使用。

           1.創建Java項目

            (1)打開Eclipse,然后選擇New→Java Project,如圖5-13所示。

            圖5-13  Java Project菜單命令

            (2)在打開New Java輸入Project name,JRE選擇當前安裝的JRE,然后單擊Finish,如圖5-14所示。

            圖5-14  New Java Project對話框

            (3)進入項目頁面,在Package Explorer中右鍵單擊該項目名稱,選擇New→Class命令,如圖5-15所示。

            圖5-15  選擇Class菜單命令

            (4)輸入包名稱和類名稱,并勾選Public static void main以生成main函數,如圖5-16所示。

          本文選自《Selenium自動化測試指南》第五章節,本站經人民郵電出版社和作者的授權,近期將進行部分章節的連載,敬請期待!

          版權聲明:51Testing軟件測試網獲人民郵電出版社和作者授權連載本書部分章節。

          任何個人或單位未獲得明確的書面許可,不得對本文內容復制、轉載或進行鏡像,否則將追究法律責任。

          相關文章:

          新書介紹:Selenium自動化測試指南—51Testing鼎力推薦

          選擇瀏覽器開始測試—Selenium自動化測試指南(2)

          posted on 2013-08-30 09:11 順其自然EVO 閱讀(6031) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學習

          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 云阳县| 兴隆县| 新营市| 剑阁县| 宾阳县| 莱西市| 武鸣县| 大庆市| 元阳县| 浦东新区| 伊宁市| 固镇县| 高清| 宁武县| 扶绥县| 宾川县| 沙湾县| 广西| 景东| 绥江县| 墨玉县| 酉阳| 晴隆县| 新竹县| 大连市| 宁国市| 新绛县| 江达县| 台前县| 灵璧县| 福泉市| 鹤峰县| 石河子市| 罗江县| 翁牛特旗| 黑水县| 迁西县| 措美县| 赤峰市| 栖霞市| 如皋市|