Selenium2入門(二)WebDriver,selenium2webdriver

來源:互聯網
上載者:User

Selenium2入門(二)WebDriver,selenium2webdriver

前文Selenium2入門(一)說到Selenium是Web 應用程式測試架構,那麼如果對一個簡單的web應用需求:開啟瀏覽器,登入百度首頁,輸入“歐洲杯”關鍵詞,點擊搜尋按鈕 這一系列操作,能否用Selenium進行執行呢?可以,下面介紹的WebDriver就是可以完成這項任務的方法之一:

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

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

Selenium 2針對各個瀏覽器而開發的,它取代了嵌入到被測Web應用中的 JavaScript。與瀏覽器的緊密整合,支援建立更進階的測試,避免了JavaScript安全模型的限制。除了來自瀏覽器廠商的支援,Selenium 2 還利用作業系統級的調用類比使用者輸入。WebDriver 支援

  • Firefox (FirefoxDriver)

  • IE(InternetExplorerDriver)

  • Opera(OperaDriver)

  • Chrome (ChromeDriver)

  • 以及safari(SafariDriver)

還支援Android(Selendroid)和iPhone(Appium)的行動裝置 App測試。此外,Selenium 2還包括基於HtmlUnit的無介面實現,稱為HtmlUnitDriver(在後面文章中會介紹),和基於webkit的無介面瀏覽器phantomjs。Selenium 2 API可以通過

  • Java

  • C#

  • PHP

  • Python

  • Perl

  • Ruby

等程式設計語言訪問,支援開發人員使用他們常用的程式設計語言來建立測試。

廢話不多說,使用WebDrive進行上述功能的測試,首先是開發環境的搭建:

一、開發環境:

  1、JDK

  2、MyEclipse

  3、Selenium:selenium-java-2.53.1.zip,:http://code.google.com/p/selenium/downloads/list

解壓selenium-java包,這個包裡麵包含四部分,如:

二、建立Java Project:

  1、把上面解壓出來的jar檔案(包括libs和selenium-java-2.53.1.jar)拷到建立的project目錄下,目錄結構如:

2、添加build path,項目目錄右鍵-->Build Path--> config build path-->Java Build Path-->Libraries-->Add JARs

  把libs檔案夾下的jar包全部添加上,再添加selenium-java-2.39.0和selenium-java-2.39.0-srcs

3、添加完之後目錄結構如,多了Referenced Libraries,這裡就是上面那一步添加進去的jar包:

4、關聯selenium源碼:

至此,環境工作準備就緒。

三、編寫測試類別

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;public class SeleniumTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub//如果Firefox瀏覽器沒有預設安裝在C盤,需要制定其路徑        //System.setProperty("webdriver.firefox.bin", "D:/Program Files/Mozilla firefox/firefox.exe");         WebDriver driver = new FirefoxDriver();        driver.get("http://www.baidu.com/");                driver.manage().window().maximize();                WebElement txtbox = driver.findElement(By.name("wd"));        txtbox.sendKeys("歐洲杯");                WebElement btn = driver.findElement(By.id("su"));        btn.click();        //為便於查看測試效果,可把關閉瀏覽器操作注釋        //driver.close();}}

通過這種方式,可以查看到程式會自動開啟FF,自動輸入歐洲杯然後出現查詢結果。

觀察程式執行過程,會發現無論是開啟瀏覽器,還是當我們類比填入關鍵詞,並進行點擊搜尋時,頁面載入是需要一定時間的,而webdriver只能找到頁面已有的元素,所以有些時候需要加入一個等待的時間,讓頁面元素完全載入出來,才能通過findelement方法找到你想要的元素。因此,最好能夠在click語句後,加入一條等待語句,程式編程如下所示:

 1 import org.openqa.selenium.By; 2 import org.openqa.selenium.WebDriver; 3 import org.openqa.selenium.WebElement; 4 import org.openqa.selenium.firefox.FirefoxDriver; 5  6  7 public class SeleniumWebDriverSimpleDemo { 8  9     /**10      * @param args11      */12     public static void main(String[] args) {13         // TODO Auto-generated method stub14         //如果Firefox瀏覽器沒有預設安裝在C盤,需要制定其路徑15         //System.setProperty("webdriver.firefox.bin", "D:/Program Files/Mozilla firefox/firefox.exe"); 16         WebDriver driver = new FirefoxDriver();17         driver.get("http://www.baidu.com/");18         19         driver.manage().window().maximize();20         21         WebElement txtbox = driver.findElement(By.name("wd"));22         txtbox.sendKeys("歐洲杯");23         24         WebElement btn = driver.findElement(By.id("su"));25         btn.click();26         try {27 28             Thread.sleep(3000);29 30         } catch (InterruptedException e) {31 32             // TODO Auto-generated catch block33 34             e.printStackTrace();35 36         }37 38      39         //為便於查看測試效果,可把關閉瀏覽器操作注釋40         //driver.close();41 42     }43 44 }

這個sleep()並不是WebDriver中內建的方法,而是java中休眠線程的一個方法,這裡不是很推薦。WebDriver內建了一個智能等待的方法。

 

driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

 

 

Arg0:等待的時間長度,int 類型 ;

Arg1:等待時間的單位 TimeUnit.SECONDS 一般用秒作為單位。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.