2014-07-07 13 views
7

Ho aggiunto PhantomJS e Selenium alla mia app console C# e voglio fare una schermata del browser quando arriva a un elemento specifico. Il motivo è che, per qualche motivo, quando utilizzo il ChromeDriver, funziona bene, ma quando uso PhantomJS fallisce su alcuni elementi.Ottenere screenshot usando PhantomJS in C#

Immagino di aver bisogno di un'introduzione su come fare uno screenshot in C# usando phantomjs. Mi sono guardato su Internet e sembra che tutti stiano usando gli script java per farlo. Il problema che sto avendo è che non so come integrare gli script java nella mia app C# e quindi usarlo con phantomJS per ottenere lo screenshot. Se posso ottenere un aiuto su come farlo, sarebbe molto bello.

TLDR: Ho trovato http://code.tutsplus.com/tutorials/testing-javascript-with-phantomjs--net-28243 e questo è quello che voglio fare ma non so come usare il javascript nella mia app C#.

+0

Questa domanda ha già una risposta. http://stackoverflow.com/questions/3422262/take-a-screenshot-with-selenium-webdriver –

+1

maledetto uomo pensavo di aver fatto abbastanza ricerche grazie e scusa per aver perso tempo – Darthlemi

+0

Inoltre, potrebbe essere necessario ingrandire la finestra del browser . Ho notato con il driver phantomJS che lo schermo non era ingrandito di default. Leggi la seconda risposta di questa domanda: http://stackoverflow.com/questions/3189430/how-do-i-maximize-the-browser-window-in-selenium-webdriver-selenium-2-using-c –

risposta

10

Come hai già detto che il codice funziona già per Chrome, è meglio pubblicarlo, per mostrare che cosa sei esattamente dopo.

Tuttavia, qui è come prendere screenshot utilizzando PhantomJSDriver in C# in generale:

var driver = new PhantomJSDriver(); 
driver.Manage().Window.Maximize(); // optional 
driver.Navigate().GoToUrl("http://stackoverflow.com"); 

driver.TakeScreenshot().SaveAsFile("screenshot.png", ImageFormat.Png); 

driver.Quit(); 

Si noti che è necessario fare riferimento WebDriver.Support.dll e System.Drawing nel progetto.

+4

Per quelli osservando questo, il TakeScreenshot() è un metodo di estensione trovato in OpenQA.Selenium.Support.Extensions – gottlieb76

+8

Per farlo funzionare, ho dovuto installare il [PhantomJS] (https://www.nuget.org/packages/PhantomJS /), [Selenium WebDriver] (https://www.nuget.org/packages/Selenium.WebDriver/) e [Classi di supporto Selenium WebDriver] (https://www.nuget.org/packages/Selenium.Support/) Pacchetti NuGet e aggiungere gli spazi dei nomi OpenQA.Selenium.PhantomJS, OpenQA.Selenium.Support.Extensions e System.Drawing.Imaging alla mia classe. Dopo ciò ha funzionato perfettamente. :-) –

+0

Devi anche includere lo spazio dei nomi, quindi usare 'OpenQA.Selenium.Support.Extensions;' – Liam

Problemi correlati