【背景】
目前項目用的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的修改知識。最輕量級的方法是寫個腳本,在自動化運行之前先執行腳本,修改到期望運行的瀏覽器中。