2014-10-31 108 views
1

我有一個需要使用用戶名和密碼進行驗證的HTTP/HTTPS代理。我如何使用C#selenium chrome webdriver來做到這一點?如何在c#selenium chrome驅動程序中驗證(用戶/密碼)代理

string host = proxies[count].Split(':')[0]; 
int port = Convert.ToInt32(proxies[count].Split(':')[1]) + 1; 

string prox = host + ":" + port.ToString(); 

OpenQA.Selenium.Proxy proxy = new OpenQA.Selenium.Proxy(); 
proxy.HttpProxy = prox; 
proxy.SslProxy = prox; 
options.Proxy = proxy; 

選項是我分配給驅動程序的ChromeOptions類。

+0

那麼問題是什麼?你有上面的代碼,太棒了,它有什麼問題? – Arran 2014-10-31 14:28:59

+0

它不使用用戶名:密碼進行身份驗證。我在Chrome窗口中看到一個彈出框,輸入登錄信息以使用代理。 – lincher 2014-10-31 14:46:51

回答

0

這是爲Firefox,但最好的答案可能會有所幫助。

C# Selenium WebDriver FireFox Profile - using proxy with Authentication

你可以做的是創建一個配置文件,並保存在它的認證數據。如果您的個人資料被稱爲「webdriver的」,你可以在初始化從代碼中選擇它:

ProfilesIni allProfiles = new ProfilesIni(); 
FirefoxProfile profile = allProfiles.getProfile("WebDriver"); 
profile.setPreferences("foo.bar",23); 
WebDriver driver = new FirefoxDriver(profile); 
1

唯一成功的方法,我發現是使用了AutoIt(https://www.autoitscript.com/site/autoit)。

我有我所有主流瀏覽器的代理驗證設置,但這應該適用於Chrome。 我從內存中寫下了我的手機。如果它不起作用,請告訴我,我會改正的。

WinWait("data:, - Google Chrome","","10") 
If WinExists("data:, - Google Chrome","")Then 
WinActivate("data:, - Google Chrome") 
Send("USERNAMEGOESHERE"{TAB}") 
Send("USERPASSWORDGOESHERE"{ENTER}") 

使用的AutoIt,創建此作爲一個腳本,編譯爲exe,保存到某個地方,並用以下(Java代碼)引用該文件:

Runtime.getRuntime().exec("C:\\users\\USERID\\desktop\\FILENAME.exe"); 

我發現最好致電代理腳本在調用觸發代理授權的URL之前的一個步驟。

+0

我也用AutoIT取得了成功,但是發現AutoIT在Selenium Grid上運行時有侷限性。如果您沒有將您的測試運行並行化,那麼@ TheBear的解決方案應該能讓您走上正軌。 – 2014-11-11 04:58:33

相關問題