【背景】

目前項目用的UI自動化框架以及運行機制是,TeamCity + MSTest + Specflow + Selenium

自動化Class Liberary項目. 每次Build成功後,會生成dll。然後把dll的路徑配置到teamcity中,設置好每天固定時間自動運行。因為之前一直是在IE中run,這次是希望能在不同的瀏覽器上進行驗證。但是又能通過外界來控制是通過那個瀏覽器運行。

【想到過得解決方案】

1. 理想狀態下,在運行MSTest的時候,我只要輸入這樣的命令行,把瀏覽器信息通過參數的形式傳入,比如

MSTest.exe UIRun.dll -Chrome

但是怎麼給dll 傳這個參數進去呢,某度某歌翻遍都沒有找到和我相似的情形,對我這種對代碼本身不感冒的人在這個上邊糾結讓我很不開心。於是我想到了另一個方法

2. 給project 加多個app.config。通過configuration management來生成多個在不同瀏覽器下運行的Build。再分別執行。這種方式可以實現,但是每次為了跑一個瀏覽器就要build一次所有的代碼,過於重型。更簡單的方法是

3. 只用一個app.config。 當project build完成後,會生成相應的dll.config。於是一個偷懶的方法就產生了。我把瀏覽器設置寫到app.config裏邊。

執行完一次ie UI run後,就修改dll.config文件中的瀏覽器信息。然後再執行第二次chrome。

<configuration>
 
  <appSettings>
    <add key="Brower" value="ie" />
  </appSettings>
 
</configuration>

至於怎麼修改dll.config。方法就多了,其實就是對xml的修改知識。最輕量級的方法是寫個腳本,在自動化運行之前先執行腳本,修改到期望運行的瀏覽器中。