2016-04-26 13 views
10

Sto riscontrando problemi con CFSelenium/TestBox. Sto sviluppando su Windows 7 VM, Coldfusion 10. Ho scaricato una nuova copia di cfselenium da https://github.com/teamcfadvance/CFSelenium/archive/master.zip.CFSelenium "Impossibile avviare la nuova sessione del browser"

La mia struttura dei file è

wwwroot | 
    cfselenium | 
    Selenium-RC | 
     Selenium-server-standalone-2.46.0.jar 
    Selenium.cfc 
    Server.cfc 
    Testbox | 
    … various testbox files 
    MySite | 
    Tests| 
     Specs | 
      … my test files 
      seleniumtest.cfc 
     Application.cfc 
     Index.cfm 

MySite/Test/Application.cfc include mappature sia per Testbox/e cfselenium /.

La suite di test, seleniumtest.cfc estende testbox.system.BaseSpec, e la sua beforeAll() e dopo All() funzioni istanziare selenio, avviarlo, e strappano giù:

component extends="testbox.system.BaseSpec" { 

function beforeAll(){ 
     // create Selenium class 
     selenium = new cfselenium.Selenium(); 
     // Start it up. 
     selenium.start("mysite", "*chrome"); 
    } 

    // executes after all suites+specs in the run() method 
    function afterAll(){ 
     selenium.stop(); 
     selenium.stopServer(); 
    } 

function run(testResults, testBox){ 
    describe('selenium', function(){ 
     // hello world equivalent 
     describe('equality', function(){ 
      it('true should be true', function(){ 
       expect(true).toBe(true); 
      }); 
     }); 
    }); 
} 
} 

Nuovo comportamento: quando passando il seguente per selenium.start():

selenium.start("https://www.google.com", "*googlechrome"); 

ottengo il seguente errore:

The Response of the Selenium RC is invalid: Failed to start new browser session: java.lang.RuntimeException: org.openqa.selenium.os.WindowsRegistryException: Problem while managing the registry, OS Version '6.1', regVersion1 = false Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03' System info: host: 'myhostname', ip: 'myvm_ip_address', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_67' Driver info: driver.version: unknown

Per tutte le altre versioni di URL o browser passo a selenium.start() (Ho provato '* chrome', '* firefox', '* iexplore', '* iexploreproxy'), ho ricevuto il seguente errore:

Dalla traccia dello stack, posso vedere che non riesce a selenium.DoCommand().

Da un altro post SO, è stato suggerito che se la porta 4444 era attualmente in uso, potrebbe interferire con il server RC-selenio. Ho riavviato il VM e verificato che la porta 4444 non era in uso eseguendo

Netstat –an | find “4444” 

Dopo ancora una volta in esecuzione della suite di test, in esecuzione netstat con lo stesso comando mostrato

TCP 0.0.0.0:4444   0.0.0.0:0    LISTENING 
TCP 127.0.0.1:4444   127.0.0.1:49209  ESTABLISHED 
TCP 127.0.0.1:49209  127.0.0.1:4444   ESTABLISHED 
TCP [::]:4444    [::]:0     LISTENING 
TCP [::1]:4444    [::1]:49208   ESTABLISHED 
TCP [::1]:49208   [::1]:4444    ESTABLISHED 

Guardando ceppi CF, ho vedere quanto segue:

Apr 29, 2016 09:44:23 AM Information [ajp-bio-8012-exec-3] - Starting HTTP request {URL=' http://localhost:4444/selenium-server/driver/ ', method='POST'}

È possibile che ci sia una cartella del server di selenio sotto wwwroot? È il webdriver?

MODIFICA: Per la risposta di Dan, ho scaricato chromedriver_win32 da http://chromedriver.storage.googleapis.com/index.html?path=2.21/, estratto in C: \ Programmi (x86) \ chromedriver, aggiunto al mio PERCORSO e riavviato la VM. Dopo aver cambiato il pilota '* googlechrome' a '* chrome', sembra funzionare ... ero in grado di eseguire il seguente test con successo:

function testIncludes(){ 
     selenium.open("https://www.google.com"); 
     $assert.isEqual("Google", selenium.getTitle()); 
} 

Quindi penso che siamo sulla nostra strada qui.

Sembra che anche il driver IE funzioni.

+0

James - c'è un errore di sintassi: super.beforeAll ('siteUnderTest', '* selectedBrowser); ha bisogno di un'altra citazione singola dopo * selectedBrowser ... forse un errore di copia e incolla? –

+0

@MarkAKruger: sì, corretto. – earachefl

+0

Forse un altro errore di battitura qui, ma la prima citazione singola della super chiamata non è una citazione singola _normal_ - 'super.beforeAll ('siteUnderTest','. E dove hai ottenuto 'cfselenium.BaseSpec' che stai estendendo dal cfc? Non lo vedo come parte del progetto su GitHub. –

risposta

3

Selenium non può avviare Chrome senza Chrome Driver (poiché Chrome non fa più parte del webkit) e Selenium può solo avviare i browser Webkit per impostazione predefinita. Dovresti essere in grado di avviare Firefox (se installato) senza bisogno di binari aggiuntivi.

Per ottenere Chrome di lavoro è necessario effettuare le seguenti operazioni:

  1. Scarica bidone conducente Chrome.
  2. Aggiungilo al tuo percorso.
  3. Selenium dovrebbe essere in grado di avviare il browser.

Ci possono essere altri problemi nel codice, ma ritengo che i commenti abbiano fornito un feedback sufficiente a tale riguardo.

È possibile scaricare il driver dal: https://sites.google.com/a/chromium.org/chromedriver/downloads

AGGIORNATO

IE richiede un driver così:

The Internet Explorer Driver Server This is required if you want to make use of the latest and greatest features of the WebDriver InternetExplorerDriver. Please make sure that this is available on your $PATH (or %PATH% on Windows) in order for the IE Driver to work as expected.

Download version 2.53.0 for (recommended) 32 Bit Windows IE or 64 bit Windows IE

Quello qui sopra è da: http://www.seleniumhq.org/download/ per quanto riguarda le finestre di guida. Sembra che l'host con il browser deve eseguire un Web driver Selenio appositamente per IE

Firefox pubblica anche il loro autista:

Firefox driver is included in the selenium-server-stanalone.jar available in the downloads. The driver comes in the form of an xpi (firefox extension) which is added to the firefox profile when you start a new instance of FirefoxDriver.

Maggiori dettagli possono essere trovati here. Funziona in modo simile ai driver Chrome e IE. La cosa importante da realizzare è che, poiché i test vengono eseguiti su un host e i browser sono remoti da dove vengono eseguiti i test, è possibile che si desideri visualizzare anche Selenium Grid.

+0

sfortunato con IE?Siamo tenuti a sostenerlo. Proverò con Chrome. Ho dimenticato di aver disinstallato Firefox sulla mia VM. – earachefl

+0

Ho aggiornato la domanda per riflettere che questo sembra funzionare, dopo aver cambiato il parametro del driver in "* chrome". Grazie Dan! – earachefl

+0

Super! Dare un'occhiata a cose di IE e aggiornare la mia risposta. Se Chrome funziona, tutti i bit di rete vengono elaborati. –

Problemi correlati