2016-06-12 681 views
7

我使用Python和Selenium庫編寫測試套件。使用chromedriver,我設置代理使用:使用Python設置使用Selenium的chromedriver proxy auth使用Python

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('--proxy-server=%s' % hostname + ":" + port) 
global driver 
driver = webdriver.Chrome(chrome_options=chrome_options) 

這適用於代理沒有身份驗證。但是,如果代理要求您使用用戶名和密碼登錄,它將不起作用。使用add_argument或其他方法將代理身份驗證信息傳遞給chromedriver的正確方法是什麼?

這是不一樣的:How to set Proxy setting for Chrome in Selenium Java

眼見爲:

  1. 我TS不同的語言
  2. 它的火狐,而不是瀏覽器。
  3. --proxy-server = http://user:[email protected]:8080不起作用。
+0

http://stackoverflow.com/questions/30451190/how-to-use-authenticated-proxy-in-selenium-chromedriver –

+0

@KirilS。根據該主題中的內容,我需要在Chrome中使用某種擴展來實現此目的? – Jorge

+0

它說的主要事情是,與Firefox不同,Chrome使用OS代理(不是它自己的),所以你的選擇是1 - 在測試之前用適當的代理設置設置操作系統(對於Windows你可以設置一個特殊用戶硒測試); 2 - 從測試中設置OS代理設置(可能太複雜); 3 - 使用一個特殊的附件,可以讓您即時更改代理設置。 –

回答

1

使用DesiredCapabilities。我已經成功地使用代理認證有以下:

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

proxy = {'address': '123.123.123.123:2345', 
     'usernmae': 'johnsmith123', 
     'password': 'iliketurtles'} 


capabilities = dict(DesiredCapabilities.CHROME) 
capabilities['proxy'] = {'proxyType': 'MANUAL', 
         'httpProxy': proxy['address'], 
         'ftpProxy': proxy['address'], 
         'sslProxy': proxy['address'], 
         'noProxy': '', 
         'class': "org.openqa.selenium.Proxy", 
         'autodetect': False} 

capabilities['proxy']['socksUsername'] = proxy['username'] 
capabilities['proxy']['socksPassword'] = proxy['password'] 

driver = webdriver.Chrome(executable_path=[path to your chromedriver], desired_capabilities=capabilities) 

編輯:不幸的是,似乎自從這個帖子的更新,無論是硒或Chrome的一個這種方法不再有效。截至目前,我不知道另一種解決方案,但如果我發現任何問題,我會試驗並更新。

+0

它不適合我,我不得不使用動態生成的擴展。我會在一會兒再試一次。我正在使用Selenium .NET,可能是這個原因 – Toolkit

+1

有一個輸入錯誤的第5行'用戶名'被寫爲'usernmae' – Stack

+1

這種方法不適用於需要驗證的chromedriver和代理。 – Stack

相關問題