.NET自動化測試載入器:Selenium Grid

來源:互聯網
上載者:User

標籤:問題   中心   logs   工具   兩種方法   消費   系統   返回   sites   

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

自己寫並行架構,好處是一切盡在掌控,有問題可以快速定位,針對業務的定製化程度高,使用者用起來方便。目前想到的問題是,如果在單機多賬戶登入同一系統的情況下,會不會串cookie?不過我發現,可能是瀏覽器廠商把不同的Driver執行個體給隔離了,這樣就省很多事。實現思路大體是:各Client(測試指令碼的解析器)向MQ隊列發送TestCase訊息,多個執行器監聽同一隊列消費訊息,執行測試案例,再返回結果。

由於自己偷懶,這裡先用現成的Selenium Grid來做並行。SeleniumGrid是一個叢集,有一個中心節點,稱為hub;多個執行節點,稱為node。其中,Hub的職責是管理各Node節點(如節點資訊、是否Alive)、與Client建立串連、向各Node發送執行命令。 Client與Hub的分界點在Driver這兒。即Selenium指令碼還是在Client上跑,但是控制的Driver是在Grid裡面。(這其實跟自己寫並行架構的邊界劃分已經不同了)。下面就入個門,介紹一下安裝、運行、Helloworld(哦,應該是Hello baidu...)

 

1. 下載:

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

  

 

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

  

  ChromeDriver可以直接存取:https://sites.google.com/a/chromium.org/chromedriver/

2. 安裝:

  1. 找兩台機器,虛擬機器也可以。我這裡用的是A:10.189.1.206,B:10.189.1.201。A作為Hub,B作為Node

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

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

.NET自動化測試載入器:Selenium Grid

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.