2009-06-18 9 views
21

Il mio problema è che non riesco a ottenere un semplice test WatiN per funzionare in modo affidabile sul mio computer di sviluppo che esegue Windows Server 2008 e IE8.Come si fa a far funzionare WatiN su Windows Server 2008 con IE8?

Ho visto un paio di messaggi positivi su questo, ma ho ancora problemi. Qui ci sono i posti:

Le fasi del primo articolo sembravano aiutare (commentate ":: 1" nel file i miei ospiti, mettere il mio sito (s) in siti attendibili e assicurandosi che il mio app.config abbia "STA" ed è impostato su "copia se più recente", ma non sono stati di aiuto in modo affidabile. Ho provato il codice del secondo esempio sperando che sarebbe stato utile, ma non lo è stato. Sto usando WatiN versione 2.0 beta 1.

My NUnit code lo oks like the following:

protected Browser Browser { get; set; } 

[TestFixtureSetUp] 
public void SetupPriorToTestsInThisFixture() 
{ 
    Browser = new IE(); 
    Browser.GoTo(Constants.SiteCollectionUrl); 
} 

[TestFixtureTearDown] 
public void TearDownAfterTestsInThisFixture() 
{ 
    if (Browser != null) 
    { 
     Browser.Dispose(); 
    } 
} 

[Test] 
public void WaterThroughThePipes() 
{ 
    Link link = Browser.Link(Find.ByText("Calendar")); 
    bool exists = link.Exists; 
    Assert.That(exists, Is.True, "Could not find 'Calendar' link."); 
} 

Quello che vedo è che a volte (anche se raramente) passa il test. A volte l'asserzione fallisce (esiste = false), a volte ho un timeout quando provo ad aprire il browser, ea volte ho un errore nel tentativo di accedere a link.Exists.

L'errore durante l'accesso link.Exists assomiglia:

MyFixture.WaterThroughThePipes: System.Runtime.InteropServices.COMException: L'interfaccia è sconosciuto. (Eccezione da HRESULT: 0x800706B5)

io non riesco a riprodurre l'errore di timeout ora quindi non posso prevedere che al momento (anche se questo accadeva tutto il tempo).

Tendo a vedere risultati diversi quando si esegue questo in modalità di debug rispetto a non in esecuzione in modalità di debug.

Per quello che vale, Firefox 3.0.6 non ha mai funzionato per me. Mi piacerebbe, ma ho bisogno di IE per lavorare a prescindere. Ecco l'errore che ottengo con Firefox.

MyFixture (TestFixtureSetUp): WatiN.Core.Native.Mozilla.FireFoxException: Impossibile connettersi al server di jssh, si prega di assicurarsi di aver correttamente installato il plugin jssh.xpi ----> System.Net .Sockets.SocketException: Nessuna connessione può essere effettuata perché il computer di destinazione lo ha rifiutato attivamente 127.0.0.1:9997

Qualche idea? Non voglio davvero tornare al Selenio (sono stato lì, fatto così), ma potrei doverlo fare.

+0

Oh, ho anche trovato risultati diversi se esco NUnit e riaprirlo. Ho anche provato un paio di riavvii durante questo processo per vedere se ha aiutato (non è stato così). –

+2

Puoi provarlo con Internet Explorer 7? "L'interfaccia è sconosciuta" suggerisce che forse Watin non supporta ancora IE8 - certamente non è stato scritto contro di esso. Di certo questa è solo una supposizione (debugging psichico). Problema di Firefox: hai installato l'estensione jssh? E potresti provare anche il selenio. – devdimi

+0

Una volta installato IE8, non penso che si possa tornare a IE7 senza installare un nuovo sistema operativo. Sono sicuro che ci sia una soluzione alternativa, ma potrebbe essere rischioso ... Potrei esaminarlo. Non avevo provato l'estensione jssh per Firefox dato che Firefox non era il mio obiettivo, ma probabilmente lo farò, grazie per il suggerimento. –

risposta

1

IE8 definatley funziona con WatiN e ha fatto sin dalla prima versione pubblica di IE8.

Se qualcosa sta funzionando nel debug ma non durante l'esecuzione di solito punta a un problema di blocco di sicurezza di Server 2008 o di temporizzazione.

Si deve mettere la linea che non sta riuscendo in un tentativo di cattura, quindi se c'è una pausa di eccezione per dire mezzo sec e quindi riprovare di nuovo.

Assicurarsi inoltre di aver disattivato tutti i blocchi di sicurezza aggiuntivi del server e di eseguire nUnit come amministratore per evitare che UAC si intrometta.

0

Riguardo all'errore che si sta verificando su firefox ... Ciò può essere risolto installando FireWatir FF plugin. (O almeno ha funzionato per me su 3.5.3)

Ma come già accennato, IE è supportato e in un contesto WatiN, l'utilizzo di FireFox non è una soluzione magica.

29

eseguire Visual Studio come amministratore

+1

Bingo! Ho avuto un System.Runtime.InteropServices.COMException non gestito dal codice utente Message = "L'interfaccia è sconosciuta. (Eccezione da HRESULT: 0x800706B5)" l'errore proveniente da mshtml.HTMLDocumentClass.IHTMLDocument2_get_url() e l'esecuzione di Visual Studio come amministratore risolto ! –

+0

Stavo incontrando questo problema durante l'esecuzione di Watin in un test Xunit tramite TestDriven.net ed eseguendo VS come amministratore risolto. –

+0

L'esecuzione di Visual Studio come amministratore risolve il problema durante il debug. Ma se eseguo il mio exe come utente standard, fallisce per lo stesso motivo. C'è qualche soluzione? – Ikaso

0

L'altra alternativa per evitare di Visual Studio o NUnit come amministratore potrebbe essere quella di disabilitare UAC a livello di macchina, che non dovrebbe essere un problema di sicurezza se si esegue con almeno privilegi (che dovresti essere).

21

Sono stato in grado di ottenere questo errore COM per andare via - e ottenere i miei test in esecuzione normalmente - regolando le mie impostazioni di sicurezza Internet su "Abilita modalità protetta", anche per i siti Intranet locali. Questa singola casella di controllo ha fatto la differenza. (E non è necessario eseguire Visual Studio come amministratore.)

See this blog post per risolvere questo problema senza eseguire Visual Studio come amministratore.

In breve: "Attiva modalità protetta"

In Internet Explorer, aprire Strumenti -> Opzioni Internet - -> Protezione> Intranet locale e selezionare la casella

Io corro IE 8 e Visual Studio 2010 su Windows 7.

+0

Questo ha funzionato perfettamente e molto più bello di dover eseguire come amministratore come ho dovuto in passato. – Bronumski

+0

Questo non ha funzionato per me, IE9 Win7 64. – mxmissile

+0

Confermato. Ho lavorato per me per la vittoria 2008 – lstanczyk