Я столкнулся с ситуацией, когда мне нужно повторно инициализировать элементы управления каждой страницы, когда страница загружается для каждого теста.Я разделил объявление элементов управления страницы в одном файле кода и операции, которые выполняются над этими элементами управления в другом файле кода.
Я подверг эти операции тестовым сценариям, поэтому из тестовых примеров не передаются элементы управления.Я реализовал Singleton для инициализации элементов управления.Из-за этого первый тестовый пример оправдывает любые проблемы.Когда начинается второй тест, он говорит: «Ссылка на объект не установлена для экземпляра объекта».при попытке получить доступ к элементу управления, который уже инициализирован.
public partial class Login : Page
{
protected TextField txtUserName;
protected TextField txtPassword;
protected TextField txtConPassword;
public Login()
{
this.txtUserName = Util.Browser.TextField(Find.ById("username"));
this.txtPassword = Util.Browser.TextField(Find.ById("password"));
this.txtConPassword = Util.Browser.TextField(Find.ByValue("password"));
}
}
public partial class Login
{
/// <summary>
/// Set user name.
/// </summary>
/// <param name="userName">User name.</param>
public void SetUserName(string userName)
{
this.txtUserName.TypeText(userName);
//Util.SetTextHelper(this.txtUserName, userName);
}
}
Я предполагаю, что элементы управления инициализируются только тогда, когда браузер загружается с Document.Когда первый тест заканчивается, браузер закрывается и удаляется.Поэтому, когда браузер повторно инициализируется (для второго теста) с документом, поскольку инициализация элементов управления реализована с использованием Singleton, значения элементов управления выдают ошибку.
Эта проблема может быть решена путем не реализации Singleton, ноповторная инициализация элементов управления там, где это требуется, не имеет смысла.