.NET自動化測試工具:Selenium Grid

  在生產環境,QA會同時跑幾十個上百個的test case。若是用單機串行的話,是一件很是耗時的事情,估計比手點快不了多少。使用並行方案的話,有兩種方法,一個是本身寫並行框架,一個是用現成的Selenium Grid。java

本身寫並行框架,好處是一切盡在掌控,有問題能夠快速定位,針對業務的定製化程度高,用戶用起來方便。目前想到的問題是,若是在單機多帳戶登陸同一系統的狀況下,會不會串cookie?不過我發現,多是瀏覽器廠商把不一樣的Driver實例給隔離了,這樣就省不少事。實現思路大致是:各Client(測試腳本的解析器)向MQ隊列發送TestCase消息,多個執行器監聽同一隊列消費消息,執行測試用例,再返回結果。node

因爲本身偷懶,這裏先用現成的Selenium Grid來作並行。SeleniumGrid是一個集羣,有一箇中心節點,稱爲hub;多個執行節點,稱爲node。其中,Hub的職責是管理各Node節點(如節點信息、是否Alive)、與Client創建鏈接、向各Node發送執行命令。 Client與Hub的分界點在Driver這兒。即Selenium腳本仍是在Client上跑,可是控制的Driver是在Grid裏面。(這其實跟本身寫並行框架的邊界劃分已經不一樣了)。下面就入個門,介紹一下安裝、運行、Helloworld(哦,應該是Hello baidu...)chrome

 

1. 下載:瀏覽器

  1.Selenium Standalone Server: http://www.seleniumhq.org/download/bash

  

 

  2.各類Driver。在www.seleniumhq.org/download也能找到入口。cookie

  

  ChromeDriver能夠直接訪問:https://sites.google.com/a/chromium.org/chromedriver/框架

2. 安裝:測試

  1. 找兩臺機器,虛擬機也能夠。我這裏用的是A:10.189.1.206,B:10.189.1.201。A做爲Hub,B做爲Nodeui

  2. 安裝Hub:把下載的selenium-server-standalone-3.5.2.jar 放在在A機器上,運行命令:google

java -jar selenium-server-standalone-3.5.2.jar -role hub

  

  3. 安裝Node:一樣,把下載的selenium-server-standalone-3.5.2.jar 放在在B機器上,運行命令:

  java -jar selenium-server-standalone-3.5.2.jar -role node -port 6666 -hub http://10.189.1.206:4444/grid/register

  這裏必需要指定Hub的地址,端口號(port)能夠設定,也能夠無論。執行完後,Hub的界面以下,表示Hub已經接受了Node的註冊:

  

  能夠訪問整個Grid的控制檯:http://10.189.1.206:4444/grid/console/

  

  4. 在Hub和Node上安裝ChromeDriver:

    把下載的chromedriver.exe複製到A機器上,好比放在C:\SeleniumPlugins目錄下。在環境變量的Path中,添加該目錄地址:C:\SeleniumPlugins。

    在B機器上,執行一樣的操做。

    

 

3. C#代碼: 

  1. 建立控制檯項目,添加Selenium引用。

  

  2. 代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Chrome;

namespace RunTestOnRemoteGrid
{
    class Program
    {
        static void Main(string[] args)
        {

            IWebDriver driver=new ChromeDriver();
            try
            {
                driver = new RemoteWebDriver(new Uri("http://10.189.1.206:4444/wd/hub"), new ChromeOptions());
                driver.Navigate().GoToUrl("http://www.baidu.com");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());   
            }
            finally
            {
                driver.Quit();
            }
        }
    }
}

  3. 運行:就能夠看到Client端在執行,沒啥動做,而B機器上,打開了Chrome瀏覽器,訪問Baidu

相關文章
相關標籤/搜索