終結篇:RemoteWebDriver與Grid簡介-----Selenium快速入門(十五)


 Selenium的基本使用,已經介紹得差不多了,今天來簡單說說RemoteWebDriver與Grid,也是本系列的最后一篇。

  還記得本系列第一章(Selenium簡介與環境搭配)的配置中,提到我們下載的 selenium-server-standalone-3.9.1.jar 並非是必要的。那什么時候需要用到呢?就是本文說的,當我們要用到遠程測試(RemoteWebDriver)與並行測試(Grid)的時候,才會用到該文件,並且該文件只需放到服務器端,客戶端並不需要。當然,為了方便測試,你也可以使用同一台電腦既當服務器,也當客戶端。

  首先這里要說一下,這里說的遠程測試是指,利用遠程服務器的webdriver進行測試,即代碼是在客戶端,但被傳送到服務器端執行,服務器端啟動的是自己的webdriver。例如,我們客戶端只安裝了chromedriver,服務端安裝了firefoxdriver,我們想測試一下項目在firefox下的表現,就可以使用服務器端進行測試。我們在客戶端寫的代碼基本一樣,因為我們客戶端通常用的driver都是:ChromeDriverEdgeDriverFirefoxDriverInternetExplorerDriverOperaDriverSafariDriver,而他們都繼承自 RemoteWebServer,所以,實際上我們客戶端的很多代碼,都是直接繼承自RemoteWebServer的,不同的最重要一點就是聲明方式,RemoteWebServer需要指定遠程服務器的IP地址或域名。

         //客戶端driver聲明方式
        System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/SeleniumTest/tools/chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        
        //RemoteWebDriver聲明方式
        RemoteWebDriver driver=new RemoteWebDriver(new URL("http://192.168.1.107:4444/wd/hub"), DesiredCapabilities.chrome());  

  下面說說RemoteWebServer的用法。

  首先說說配置,為了清楚說明,我用VirtualBox虛擬了win7,然后先安裝JDK,安裝最新版的chrome,將chromedriver.exe復制到C:\Windows下,將selenium-server-standalone-3.9.1.jar復制到C盤下,啟動命令行,輸入以下命令:java -jar c:\selenium-server-standalone-3.9.1.jar

  這樣,selenium server就啟動成功了。

  

  我們在項目中,輸入以下代碼並執行:

        //RemoteWebDriver聲明
        RemoteWebDriver driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome());
        
        driver.get("http://www.baidu.com");
        
        System.out.print(driver.getTitle());

  執行后再看看命令行,效果如下:

  

  可以看到,代碼確實在服務器端執行了,服務器端也確確實實的啟動了chrome,返回了百度的標題。而使用RemoteWebDriver與我們之前使用的webdriver的代碼基本是大同小異的。

 

  那么,Grid又是什么呢?Grid其實是一種並行測試工具,可以同時在不同機器,不同系統,不同瀏覽器上進行測試,其最大的目的就是節省測試的時間。Grid包含至少一個hub和一個node,hub和node是什么東西呢,你可以簡單理解為hub是文件夾,node是文件,hub下可以有很多node,而每個node其實就是我們測試環境的配置。例如,我們要在linux下,測試firefox,那么我們可以注冊一個node,指定平台,瀏覽器,瀏覽器版本等。而注冊可以通過命令行,又或者是自己編輯json配置文件,然后一次加載。

  那么,要並行測試,我們的代碼應該怎么寫呢,其實,大部分代碼還是一樣,不同的只是driver的聲明和配置。

        DesiredCapabilities firefoxCap=DesiredCapabilities.firefox();
        //設置瀏覽器名
        firefoxCap.setBrowserName("firefox");
        //設置版本
        firefoxCap.setVersion("46");
        //設置平台
        firefoxCap.setPlatform(Platform.LINUX);
        //該測試用例,將會被hub分配到符合cap設置的三個條件的node
        RemoteWebDriver driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), firefoxCap);

  可見,后面的RemoteWebDriver也好,Grid也好,只要我們掌握了前面所說的基本用法,也就掌握了他們的用法,只是聲明方式略有不同而已。本節只是簡單介紹,更詳細的介紹可以查看官網:https://docs.seleniumhq.org/docs/07_selenium_grid.jsp

  至此,本系列暫告一段落。

 


免責聲明!

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



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