Здравствуйте, уважаемые формучане!
Подскажите пожалуйста почему может не срабатывать FindsBy? Если я пытаюсь обратиться к элементу страницы, то возникает исключение:
“Необработанное исключение типа “System.NullReferenceException” в FindsByDemo.exe
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.”
Если произвожу поиск элементов стандартным образом, то все работает:
private void Init()
{
this._loginInputText = this.WebDriver.FindElement(By.Name("login"));
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium.Support.PageObjects;
using OpenQA.Selenium;
namespace FindsByDemo.Pages
{
class LoginPage : BasePage
{
/// <summary>
/// Поле ввода логина.
/// </summary>
[FindsBy(How = How.Name, Using = "login")]
private IWebElement _loginInputText;
/// <summary>
/// Поле ввода пароля.
/// </summary>
[FindsBy(How = How.Name, Using = "pass")]
private IWebElement _passwordInputPassword;
/// <summary>
/// Кнопка (ссылка) отправки формы авторизации.
/// </summary>
[FindsBy(How = How.Id, Using = "authbtn_link")]
private IWebElement _authBtnLink;
/// <summary>
/// Ссылка на страницу регистрации
/// </summary>
[FindsBy(How = How.Id, Using = "show_reg")]
private IWebElement _showRegLink;
/// <summary>
/// Ссылка на страницу напоминания пароля.
/// </summary>
[FindsBy(How = How.Id, Using = "auth-forgot-pass")]
private IWebElement _authForgotPassLink;
public LoginPage(IWebDriver webDriver) : base(webDriver)
{
this.Init();
this.Login = "anextour";
//Console.WriteLine(this._loginInputText.ToString());
}
private void Init()
{
this._loginInputText = this.WebDriver.FindElement(By.Name("login"));
}
/// <summary>
/// Устанавливает значение логина в форме авторизации на странице.
/// </summary>
public string Login
{
set
{
this._loginInputText.Clear();
this._loginInputText.SendKeys(value);
}
}
/// <summary>
/// Устанавливает значение пароля в форме авторизации на странице.
/// </summary>
public string Password
{
set
{
this._passwordInputPassword.Clear();
this._passwordInputPassword.SendKeys(value);
}
}
public void Submit()
{
this._authBtnLink.Click();
}
/// <summary>
/// Отправляет данные формы авторизации.
/// </summary>
public void Authorization(String login, String password)
{
this.Login = login;
this.Password = password;
this._authBtnLink.Click();
}
}
}