0

我已經在AWS上設置了Windows Server 2012實例,並且正在使用Selenium網格服務器運行Jenkins。構建部分通過罰款,但它嘗試調用browserMob.NET server.CreateProxy()調用404時失敗。我想也許這是一個安全端口問題,所以我打開了9090和9091,但仍然有同樣的問題。如果我在本地系統上使用IWebDriver,一切都很順利,但是當我切換到remoteWebDriver並將其指向AWS服務器並嘗試代理時,出現錯誤。如果任何人有任何關於我如何能夠做到這一點的想法,我已經準備好朝着正確的方向踢球了:)謝謝!是否有可能在aws windows jenkins/selenium 2網格實例上運行browsermob .net?

- 編輯: 一些更多信息:我現在有Jenkins在8081上運行,現在它停止InvalidOperationException。在server.CreateProxy相同()調用的錯誤解僱說:

「指定的域不存在或無法聯繫」目前在IIS8打開

端口是80,9090,9091,和8080

我也下載了該項目到服務器,並試圖從服務器運行它,我看到同樣的事情。我還在運行IWebDriver,它不起作用。所以如果我在我個人的Win 7 Box上本地運行它,它可以正常工作,但是當我從Windows Server 2012運行它時,它不會。這是同一個項目,但我不知道這裏會發生什麼。

try 
{ 
Server server = new Server(pathToBrowserMobProxy); 
server.Start(); 

Client client = server.CreateProxy(); 
client.NewHar("google"); 

var seleniumProxy = new Proxy { HttpProxy = client.SeleniumProxy }; 
var capabilities = DesiredCapabilities.Firefox(); 
capabilities.SetCapability(CapabilityType.Proxy, seleniumProxy); 

var driver = new RemoteWebDriver(new Uri(seleniumServerUrl), capabilities); 
driver.Navigate().GoToUrl("http://www.google.co.uk"); 

HarResult harData = client.GetHar(); 

driver.Quit(); 
client.Close(); 
server.Stop(); 

return Newtonsoft.Json.JsonConvert.SerializeObject(harData); 
} 
catch (Exception e) { throw e; } 

回答

1

所以我終於弄清楚發生了什麼事,想我會在這裏發帖。對server.CreateProxy的調用使用AutomatedTester.BrowserMob .NET包裝器。這在內部引用了編譯爲32位的Newtonsoft JSON.net版本。正因爲如此,我的Server 2012盒子是64位,所以當它實例化「Process」對象時,它導致了一個錯誤,指出「32位進程無法訪問64位進程的模塊」。它會打開命令窗口,然後崩潰,這將關閉窗口,它不會找到合適的實例。在查看299的NativeErrorCode時,我發現這是說只有一部分ReadProcessMemory或WriteProcessMemory請求已完成。所以我得到了AutomatedTester的src,刪除了他們使用的newtonsoft的ref(因爲這是我找到的第一個32位參考),並添加了爲Any CPU編譯的Nuget版本。這停止了​​崩潰並允許我運行我的測試。希望這有助於別人有一天。

相關問題