В данной статье не будет рассказано, что такое Selenium и Selenium WebDriver – по этому поводу написано уже множество замечательных статей.
Здесь я хочу привести лишь небольшой пример того, как можно протестировать клиентский код в MS Dynamics CRM.
Но думаю, парой слов о Selenium WebDriver обмолвиться все же можно.
Итак, Selenium WebDriver – это библиотека, которая позволяет управлять браузером: давать браузеру какие-то команды, заполнять элементы UI, считывать значения, запускать скрипты.
Итак, поехали!
Перво-наперво создадим стандартный Unit Test Project.
Visual Studio заботливо создаст для нас класс теста и метод теста – переименуем их в соответствии с нашей предметной областью.
Затем мы установим следующие штуки посредством nuget: Selenium.WebDriver и WebDriverIEDriver (коли IE является дефолтным браузером для MS Dynamics CRM).
Ну почти всю работу мы сделали:)
Теперь остается написать только наш юнит-тест.
Проверять наш тест будет следующий case: существует два поля «Предполагаемая сумма» и «Взвешенная сумма», при этом «Взвешенная сумма» должна равняться 30% от «Предполагаемая сумма». И данное значение должно устанавливаться клиентским скриптом.
namespace CrmSeleniumUnitTest
{
[TestClass]
public class OpportunityTests
{
[TestMethod]
public void WeightedSummCalculate()
{
decimal estimatedValue = 1000m;
decimal expectedWeightedValue = estimatedValue * 0.3m;
string contentFrame = "contentIFrame";
string estimatedValueId = "estimatedvalue";
string weightedEstimatedValueId = "isv_weightedestimatedvalue";
string weightedEstimatedValueAttribute = "value";
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("https://test.crm.crm");
driver.SwitchTo().Frame(contentFrame);
var estimatedValueElement = driver.FindElement(By.Id(estimatedValueId));
estimatedValueElement.Clear();
estimatedValueElement.SendKeys(Keys.Tab);
estimatedValueElement.SendKeys(estimatedValue.ToString(CultureInfo.InvariantCulture));
estimatedValueElement.SendKeys(Keys.Tab);
Thread.Sleep(10000);
var weightedValueElement = driver.FindElement(By.Id(weightedEstimatedValueId));
var actualWeightedValue = Decimal.Parse(weightedValueElement.GetAttribute(weightedEstimatedValueAttribute),CultureInfo.InvariantCulture);
driver.Quit();
Assert.AreEqual(expectedWeightedValue, actualWeightedValue);
}
}
}
Запускаем тест.
Ну вот и все — коротенько и по делу:)
Автор: TheHedgehog