Следуя другим примерам, я ранее следовал методу PageFactory.InitElements(driver, page)
, чтобы инициализировать свои страницы перед вызовом методов для поиска элементов на этих конкретных страницах.
Однако, похоже, что PageFactory теперь устарела .netcore, как указано здесь: https://github.com/SeleniumHQ/selenium/issues/4387
Проблема, с которой я сталкиваюсь, заключается в инициализации моих страниц для инфраструктуры автоматизации для селена без PageFactory.Init, который я использовал / видел в других случаях. Я не могу передать исключение нулевой ссылки для примера кода ниже. Вот что я настроил прямо сейчас:
Использование последних версий .netcore, selenium.chrome.webdriver, selenium.webdriver, поддержка селена и xunit
Пример настройки:
Test.cs
[Fact]
public void CanLogin()
{
Pages.Login.Login("username", "password");
Assert.True(true);
}
Pages.cs
// Здесь я хочу инициализировать свой логин и вернуть его, но у меня возникли трудности. Это ПОЛНОСТЬЮ ПСЕВДО ... это именно то место, где я хочу, чтобы это произошло
public LoginPage Login
{
return Init LoginPage here;
}
LoginPage.cs
private IWebElement userNameTextField;
private IWebElement passwordTextField;
public void Login(string userName, string password)
{
userNameTextField.SendKeys(userName);
passwordTextField.SendKeys(password);
}
Как только он нажмет Pages.Login.Login()
, он не сможет сказать System.NullReferenceException : Object reference not set to an instance of an object.
Я пробовал много вещей, но не могу найти правильный шаблон, чтобы следовать, чтобы иметь возможность инициировать все необходимые страницы в моих Pages.cs, такие как: LoginPage
Есть идеи?