22

Sommario: Chromedriver funziona normalmente su una macchina ma molto lentamente su altre due macchine identiche.Chromedriver è estremamente lento su una macchina specifica utilizzando Selenio Grid e .net

Setup:

  • Selenio WebDriver utilizzando .Net per la codifica e selenio griglia per la distribuzione dei test. MSTest viene utilizzato da Visual Studio 2010 per eseguire i test.
  • A 64bit Windows 7 macchina locale in qualità di macchine remote Hub
  • Tre 32 bit Win 7 (due dei quali sono virtuali) sulla rete locale tutti configurati come nodi. Ecco il comando utilizzato per avviare i nodi sulle macchine remote:

    java-jar C: \ seleniumWebDriver \ seleniumGrid \ selenio-server-standalone-2.31.0.jar -role nodo -hub http://XXX.XXX.XXX.XXX:4444/grid/register -browser "browserName = chrome", MaxInstances = 4 -Dwebdriver.chrome.driver = "C: \ seleniumWebDriver \ chromedriver.exe"

  • il driver viene lanciato come questo all'interno del codice: capacità

    DesiredCapabilities = nuovi DesiredCapabilities() ; capability.SetCapability (CapabilityType.BrowserName, browser); driver = nuovo RemoteWebDriver (nuovo Uri (hubUrl), capacità);

  • La variabile "browser" e "hubUrl" sopra viene trasmessa tramite un file app.config che viene creato in fase di esecuzione. In questo caso, browser = chrome.

Problema:

  • Quando la macchina messa a punto 212 (che è una macchina virtuale) come nodo Chrome utilizzando il comando di cui sopra, e poi lanciare gli script dal mozzo, vedo Chrome si avvia nella macchina remota appropriata e funziona normalmente. Campi tra 5-10 comandi al secondo.

  • Quando imposto la macchina 78 (macchina virtuale) o la macchina 103 (macchina reale) come nodo nello stesso modo, quindi lancio gli script dall'hub, vedo il nodo avviare correttamente chrome. Tuttavia, funziona estremamente lentamente, come 1 comando al secondo o meno.

Altre info: Come ho detto, su una macchina Chrome funziona normalmente, ma sugli altri, esegue con estrema lentezza. Firefox e IE, se configurati come nodi, funzionano normalmente.

Ho confrontato la macchina 212 (che funziona correttamente) con le altre macchine e non riesco a trovare la differenza. Tutte le macchine utilizzano "selenium-server-standalone-2.31.0.jar" e la stessa versione di ChromeDriver.

Non sembra che le macchine del nodo siano sovraccaricate. Inoltre, è una differenza molto consistente nelle prestazioni che non sembra correlata a nessun carico fluttuante sulla rete o sulle macchine.

La mia tecnologia di rete ha verificato che tutte queste macchine sono configurate in modo identico sulla rete.

Qualcuno ha mai visto qualcosa di simile?

MODIFICA 1: Ho effettuato l'accesso oggi e tutte e tre le macchine remote sono in esecuzione lentamente. Prima uno di loro era normale, ma ora sono tutti lenti.

+0

Nota: Questo problema esiste se corro il test utilizzando MSTest dall'interno di Visual Studio o se ho eseguito utilizzando la riga di comando MSTest. chiamata "C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86_amd64 mstest/testcontainer: "PATH \ fumo Test 4.dll" – Sky

+0

Cosa vedi quando si utilizza Chrome manualmente nelle macchine virtuali lente? Le pagine si caricano velocemente come altre macchine? –

+1

Sì, quando corro manualmente, funziona a velocità normale. – Sky

risposta

31

Mi sono imbattuto in un problema simile in cui Chromedriver era lento in alcune macchine e si è rivelato essere un problema di proxy. Disattivando "Rileva automaticamente impostazioni" in Chrome: // impostazioni> Modifica impostazioni proxy> Impostazioni LAN> reso webdriver esegui più rapidamente i comandi in chrome per me.

+0

Ciao. Sto utilizzando la versione più recente ma "Modifica impostazioni proxy" si trova in "Rete" ed è grigio. Hai qualche aggiornamento? Grazie. – FortCpp

+1

È possibile cambiarlo tramite funzionalità o parametro crome.switch? Ho trovato qualcosa come _-- no-proxy-server_, ma non sembra funzionare. – schnickers

6

Le mie impostazioni proxy non utilizzavano il rilevamento automatico, ma ho trovato che il seguente ha aiutato molto. Il tempo impiegato per avviare il driver è sceso da 43 secondi a 1 secondo

driver = new ChromeDriver(new ChromeOptions{Proxy = null}); 
+0

aggiungendo {Proxy = null} è d'aiuto, sto usando una VPN btw .. – Dean

Problemi correlati