NoSuchElementException, когда PageFactory не используется - PullRequest
0 голосов
/ 15 октября 2019

Поскольку PageFactory устарела в последней версии C # для селена, я пытаюсь переписать существующие объекты PageObject, как показано в приведенном ниже фрагменте кода. Все работает как прежде, за исключением тех случаев, когда элементы еще не загружены. Я написал ExplicitWaitConditions перед взаимодействием с ними, но я получаю NoSuchElementException в FindElement (By.Id ("email")) сам по себе, прежде чем он достигнет ExplicitWaitConditions. Он отлично работает, когда я использую PageFactory. Помощь и предложения высоко ценятся

        private IWebDriver driver;
        public LoginPage(IWebDriver _driver)
        {
            driver = _driver;
            //if (driver != null)
            //{
            //    PageFactory.InitElements(driver, this);
            //}
        }

        //[FindsBy(How = How.Id, Using = "email")]
        //public IWebElement txtUserName { get; set; }

        //No such element exception is thrown by below line
        public IWebElement txtUserName => driver.FindElement(By.Id("email"));

По сути, я пытаюсь понять, как добиться ленивой инициализации без использования PageFactory. Так как ошибка выдается до того, как элемент будет доступен.

1 Ответ

0 голосов
/ 16 октября 2019

Попробуйте добавить «это», как показано ниже

  private IWebDriver _driver;
    public LoginPage(IWebDriver _driver)
    {
        this._driver = _driver;
    }

private IWebElement FooElement
    {
        get
        {
            return this._driver.FindElement(By.Id("foo"));
        }
    }
...