Поле *** никогда не назначается и всегда будет иметь свое значение по умолчанию. - PullRequest
0 голосов
/ 01 ноября 2019

У меня проблемы с селеном и фабрикой страниц, и я действительно не знаю, что еще делать.

Я пытаюсь инициализировать элемент с помощью следующего кода:

[FindsBy(How = How.Id, Using = "sign-up-btn")]
private IWebElement signUpButton;

Однако я продолжаю получать сообщение об ошибке «Поле 'signUpButton' никогда не назначается и всегда будет иметь значение по умолчанию null"

Почему pagefactor.initelements не инициализирует значение?

У меня есть это в базовом файле:

public Page()
{
    PageFactory.InitElements(Driver, this);
}

Какой мой файл подкачки (домашняя страница) наследуется.

почему бы не присвоить переменную?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Ах, хорошо, это была моя ошибка.

Я использовал using SeleniumExtras.PageObjects;

Но я должен был использовать using SeleniumExtras.PageObjects;

Я все еще получаю нулевое сообщение об ошибке, но меняю на seleniumExtras.pageObjects икод не падает.

Спасибо всем за ввод.

0 голосов
/ 01 ноября 2019

Компилятор C # не может сказать, что метод PageFactory.InitElements(...) присваивает значение этому полю с помощью отражения класса, поэтому он жалуется. Это предупреждение, которое вы можете игнорировать, если хотите.

Если вы действительно хотите от него избавиться, измените свое поле на автоматическое свойство:

[FindsBy(How = How.Id, Using = "sign-up-btn")]
public IWebElement SignUpButton { get; set; }

Или вы можете просто использовать синтаксис тела выражения для непосредственного возврата элемента вместо использования отражения класса:

private IWebElement SignUpButton => Driver.FindElement(By.Id("sign-up-btn"));
...