C# автоматизация на браузъра, която ще работи на сървър

Използвам WatiN за известно автоматизиране на браузъра и тестване на уебсайтове. Наскоро получих заявка за автоматизиране на някаква задача, която трябва да провери уебсайт на партньор за съществуване на някои SKU (тъй като те нямат подходящ API) и да потвърди транзакцията.

Опитах да използвам WatiN, но тъй като това работи на сървър и при поискване, работният плот на сървъра е естествено заключен повечето пъти и прозорецът на IE не се отваря и процесът никога не се изпълнява.

Търся алтернатива на WatiN, която за предпочитане е .net библиотека (не е задължителна, но просто прави нещата по-лесни), не изисква влязъл потребител и винаги е хубаво да си безплатен и с отворен код.

Някой има ли опит с този вид автоматизация?


person Elad Lachmi    schedule 18.10.2013    source източник
comment
Трябва ли да изобразите сайта в браузър или ще стане само с ръчно правене на http и проверка/разбор на html?   -  person Chris    schedule 18.10.2013
comment
Няма нужда да се изобразява сайтът, стига DOM да е изграден и елементите да могат да бъдат достъпни и манипулирани. Друго изискване е възможността за подаване на формуляри.   -  person Elad Lachmi    schedule 18.10.2013
comment
Все още можете да намерите определени елементи и да изпратите формуляри ръчно, стига сайтът да не разчита на js, за да прави неща. Все пак може да отнеме много работа.   -  person Chris    schedule 18.10.2013
comment
@Chris - Може обаче да отнеме много работа - това се опитвам да избегна. Ако исках мръсен код на ниско ниво, бих използвал нещо като HTML Agility Pack. Търся по-високо ниво на абстракция, ако е възможно.   -  person Elad Lachmi    schedule 18.10.2013


Отговори (1)


Можете да използвате Selenium WebDriver заедно с PhantomJS.

Selenium е подобен в много отношения на WaitN, но поддържа повече браузъри. PhantomJS е браузър без глава и обвит в преносим изпълним файл, който можете да стартирате от вашия уеб сървър.

След като добавите пакетите NuGet, ще можете да създадете уеб драйвер на PhantomJS и да контролирате сайт, без да се налага да стартирате пълноправен браузър.

var driver = OpenQA.Selenium.PhantomJS.PhantomJSDriver();

Използваме това на сървъри за изграждане, тъй като агентите за изграждане не са влезли и няма да могат да стартират нормален процес на браузъра.

Ако просто трябва да проверите HTML, можете да използвате WebClient за да направите заявка към сайта, върнете отговора на съдържанието като низ и го анализирайте.

person BrutalDev    schedule 18.10.2013
comment
Тъкмо щях да предложа това; Документацията за Selenium е достъпна от Selenium HQ. - person Dour High Arch; 18.10.2013
comment
да Selenium + PhantomJS е точно комбинацията, която търсех! Относно WebClient, ако исках да премина на ниско ниво, можех да използвам пакета HTML Agility. Искам повече абстракция. Благодаря ти! - person Elad Lachmi; 18.10.2013