Похоже, два больших из них - это Watin & Selenium. Я не работал с Selenium, так что никакого мнения нет.
Я использовал Watin изрядное количество, и это довольно хорошо, но есть много проблем. Может быть трудно иметь дело с сильно изменяющимся временем отклика из браузера ... установка длительности тайм-аута и т. П.
Последняя версия Watin поддерживает IE & Firefox, что довольно круто.
Что касается обслуживания тестов, то, по моему опыту, самое важное - полностью отделить код "тестового драйвера" от "кода переноса страниц". Под «тестовым драйвером» я имею в виду реальную тестовую логику (NUnit или аналогичную), которая может иметь код, который выглядит следующим образом:
...
var wrapper = new SearchPageWrapper(browser);
wrapper.ClickAdvancedSearch();
wrapper.EnterSearchPhrase("dog");
wrapper.SetSortBy(SortType.Date);
wrapper.ExecuteSearch();
... упаковщик страниц предоставляет этот логический интерфейс самой странице, скрывая детали реализации (которые могут быть сложными и часто изменяться в зависимости от макета страницы):
public class SearchPageWrapper {
...
public void ClickAdvancedSearch() {
_browser.Buttons("advSearch").Click();
}
public void EnterSearchPhrase(string phrase) {
_browser.TextBox(Find.ByName("phrase")).TypeText(phrase);
}
... etc ...
}
Таким образом, вы создаете библиотеку оболочек, которая облегчает добавление новых тестовых случаев, а также облегчает работу с изменениями макета, которые влияют на то, как Ватин находит и взаимодействует с элементами на страницах.