2014-03-12 56 views
1

我正在使用C#WebDriver自動化Web應用程序。一切都已經寫入Windows的目標。但現在有必要爲Mac準備好它。使用ChromeDriver.exe,Selenium webdriver啓動Chrome。這個exe可以使用C#Process類在Windows中啓動;但不是在Mac中使用Mono中的同一個類。解決方案似乎是在Mono中構建ChromeDriver。我從github獲得了ChromeDriver源代碼。但難以建造相同的。 問題說明是:如何用Mono構建ChromeDriver.exe。我正在使用Xamarin Studio(這是我在Mac上用C#開發的開發IDE)。所以我的目標是在Xamarin Studio中加載ChromeDriver源代碼並構建它。但是,當我拉動ChromeDriver的源代碼時,我看到幾個沒有任何項目文件的C文件,如* .vcxproj。搜索這個主題,我發現它可以使用忍者來構建。有一些命令「ninja -C out \ Release chromedriver」即將爲我做。所以我從github獲取了忍者資源。但是,當我嘗試運行build命令時,它會抱怨/釋放文件或目錄不存在。它確實不存在於我提取忍者的文件夾內。我唯一的信息是,一旦我生成忍者文件,out文件夾就會在那裏。但我完全不知道如何做到這一點,或者它的先決條件是什麼。 回到我需要它的原因:在selenium webdriver代碼中,ChromeDriver使用C#進程類啓動。需要ChromeDriver內置單聲道

Process p = new Process(); 
p.StartInfo.FileName = <Full Path of ChromeDriver.exe>; 
p.UseShellExecute = false; 
p.Start(); 

此C#代碼片段可在Windows中運行,但不能在Mac上運行。我使用Xamarin Studio進行調試。而我在p.start()行得到的錯誤是「沒有進程附加到對象p」。接下來,我使用Mac上的Xamarin Studio在C#中構建一個簡單的控制檯應用程序;即輸出exe是用Mono框架構建的。我在上面的代碼中使用這個exe的路徑而不是ChromeDriver。並且p.Start()成功執行,沒有錯誤。

因此,問題歸結爲ChromeDriver.exe的單聲道版本。在chromedriver的網站上,他們擁有適用於Windows的ChromeDriver.exe,適用於Mac的ChromeDriver.dmg,但不含Mono版本。我正在尋找以下3種解決方案中的任何一種: 1.如果使用Mono構建的ChromeDriver.exe已經在某處上傳了,那沒什麼更好的了。 2.我可以嘗試使用Mono構建ChromeDriver源 (https://github.com/scheib/chromium/tree/master/chrome/test/chromedriver) 。 3.跳過構建它,並找到其他方式在Mac中啓動ChromeDriver.exe。

我抓我的頭,所有這些在過去幾天:(的。任何幫助將大大讚賞!不要讓我知道是否需要任何更多的信息,請幫助..提前

謝謝, 德布

+0

您收到的任何錯誤消息也會有所幫助。 –

+0

你得到了什麼錯誤併發布完整的堆棧跟蹤。這些詞沒有任何錯誤和代碼來支持它。 – Arran

+0

編輯該帖子的更多細節.. – Deb

回答

0

遺憾的缺席了一年!非常感謝您的concern.Yes,最後我能做到這一點。從http://chromedriver.storage.googleapis.com/index.html下載chromedriver的Mac版本,而且只是用它在我的C#(單聲道)代碼寫在Xamarin Studio中,我可以使用通常的「SeleniumDriver = new ChromeDriver(driverLibrary)」語句調用ChromeDriver,但是我必須做更多的修改在多個地方的C#代碼中使整個自動化框架在Mac上運行。我忘記了更細緻的細節,但記住它很有趣!人們很高興看到Webdriver + Mono在Mac上做它!

+0

哦,我想你沒有更多的細節嗎?會非常有幫助! –