2016-06-12 57 views
7

Sto codificando una suite di test utilizzando Python e la libreria Selenium. Utilizzando il chromedriver, sto impostando i proxy usando:Impostazione dell'autent proxy chromedriver con Selenium utilizzando Python

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

Questo funziona bene quando il proxy non ha autenticazione. Tuttavia, se il proxy richiede l'accesso a con nome utente e password, non funzionerà. Qual è il modo corretto e corretto per trasmettere le informazioni di autenticazione proxy a chromedriver usando add_argument o altri metodi?

Non è la stessa: How to set Proxy setting for Chrome in Selenium Java

Visto:

  1. ho ts una lingua diversa
  2. sua firefox, non cromo.
  3. --proxy-server = http://user:[email protected]:8080 non funziona.
+0

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

+0

@KirilS. Sulla base di ciò che è stato detto in quell'argomento avrò bisogno di una sorta di estensione in chrome per realizzare questo? – Jorge

+0

la cosa principale è che a differenza di Firefox, Chrome utilizza il proxy del sistema operativo (non proprio), quindi le opzioni sono 1 - imposta il sistema operativo con le corrette impostazioni del proxy prima del test (buona soluzione per Windows in cui è possibile impostare un utente speciale per test del selenio); 2 - impostazione delle impostazioni del proxy del sistema operativo dal test (potrebbe essere troppo complicato); 3 - utilizzando uno speciale add-on che consente di modificare le impostazioni proxy al volo. –

risposta

1

Utilizzare DesiredCapabilities. Sono stato con successo utilizzando l'autenticazione proxy con il seguente:

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) 

EDIT: a quanto pare, purtroppo, questo metodo non funziona più dal momento che uno dei aggiornato a uno selenio o Chrome poiché questo post. a partire da ora, non conosco un'altra soluzione, ma sperimenterò e aggiornerò questo se trovo qualcosa.

+0

non ha funzionato per me, ho dovuto usare un'estensione generata dinamicamente. Ci riproverò tra un po '. Sto usando Selenium .NET, potrebbe essere il motivo – Toolkit

+1

c'è un errore di battitura 5 th line 'username' è scritto come' usernmae' – Stack

+1

Questo metodo non funziona con chromedriver e proxy che richiedono l'autenticazione. – Stack