2014-07-07 16 views
7

Dodałem PhantomJS i Selenium do mojej aplikacji C# i chcę zrobić zrzut ekranu przeglądarki, gdy dotrze do określonego elementu. Powodem jest to, że z jakiegoś powodu, kiedy używam ChromeDriver, działa dobrze, ale kiedy używam PhantomJS, to zawiedzie na kilku elementach.Zrzuty ekranu za pomocą PhantomJS w języku C#

Chyba potrzebuję wprowadzenia, jak zrobić zrzut ekranu w języku C# przy użyciu phantomjs. Rozglądałem się w Internecie i wygląda na to, że wszyscy używają skryptów Java do tego. Problem polega na tym, że nie wiem jak zintegrować skrypty java z moją aplikacją C#, a następnie użyć tego z PhantomJS, aby uzyskać zrzut ekranu. Jeśli mogę uzyskać pomoc, jak to zrobić, byłoby bardzo miłe.

TLDR: Znalazłem http://code.tutsplus.com/tutorials/testing-javascript-with-phantomjs--net-28243 i to jest to, co chcę zrobić, ale nie wiem, jak korzystać z javascript w mojej aplikacji C#.

+0

To pytanie już zawiera odpowiedź. http://stackoverflow.com/questions/3422262/take-a-screenshot-with-selenium-webdriver –

+1

Cholera, pomyślałam, że zrobiłem wystarczająco dużo dzięki i przepraszam za zmarnowanie twojego czasu. – Darthlemi

+0

Być może musisz zmaksymalizować okno przeglądarki . Zauważyłem ze sterownikiem phantomJS, że ekran nie był domyślnie zmaksymalizowany. Przeczytaj drugą odpowiedź z tego pytania: http://stackoverflow.com/questions/3189430/how-do-i-maximize-the-browser-window-in-selenium-webdriver-selenium-2-using-c –

Odpowiedz

10

Jak już wspomniałeś, że masz już kod działający w Chrome, lepiej go opublikować, aby pokazać, czego dokładnie szukasz.

Jednak tutaj jest jak zrobić zrzut ekranu przy użyciu PhantomJSDriver w języku C# w ogóle:

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

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

driver.Quit(); 

Pamiętaj, że musisz odwołać WebDriver.Support.dll i System.Drawing w projekcie.

+4

Dla tych patrząc na to, TakeScreenshot() jest metodą rozszerzenia znalezioną w OpenQA.Selenium.Support.Extensions – gottlieb76

+8

Aby to zadziałało, musiałem zainstalować [PhantomJS] (https://www.nuget.org/packages/PhantomJS /), [Selenium WebDriver] (https://www.nuget.org/packages/Selenium.WebDriver/) i [Selenium WebDriver Classes Support] (https://www.nuget.org/packages/Selenium.Support/) Pakiety NuGet i dodaj do swojej klasy przestrzeń nazw OpenQA.Selenium.PhantomJS, OpenQA.Selenium.Support.Extensions i System.Drawing.Imaging. Potem wszystko działało idealnie. :-) –

+0

Trzeba również uwzględnić przestrzeń nazw, więc używając 'OpenQA.Selenium.Support.Extensions;' – Liam

Powiązane problemy