Не в состоянии вызвать метод из класса - PullRequest
0 голосов
/ 23 января 2019

У меня есть класс с именем test.cs:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using qa.WrapperFactory;

namespace Common.PageObjects
{
    public class Test
    {
        [FindsBy(How = How.XPath, Using = "xpath")]
        private IWebElement foundElement;

        [FindsBy(How = How.XPath, Using = "xpath")]
        private IWebElement EnvironmentLogoElement;

        [FindsBy(How = How.XPath, Using = "xpath")]
        private IWebElement UsernameElement;

        [FindsBy(How = How.Id, Using = "xpath")]
        private IWebElement PasswordElement;

        public void Setup()
        {
            // Set window to full screen
            BrowserFactory.Driver.Manage().Window.Maximize();
            // Clear all cookies
            BrowserFactory.Driver.Manage().Cookies.DeleteAllCookies();
        }

        public void CheckLoginPage ()
        {
            WaitMethods.WaitForShort(() => foundElement.Displayed);
            Assert.IsTrue(UsernameElement.Displayed);
            Assert.IsTrue(PasswordElement.Displayed);
        }

    }
}

Я хочу вызвать метод public void CheckLoginPage () из шагов спецпотока. это выглядит так:

using System.Configuration;
using Common.PageObjects;
using qa.WrapperFactory;
using TechTalk.SpecFlow;

namespace RegressionTest
{
    [Binding]
    public class SmokeTestSteps
    {
        [Given(@"I go to the HRControlnet login page")]
        public void GivenIGoToTheHRControlnetLoginPage()
        {
            BrowserFactory.InitBrowser("Firefox");
            var subDomain = ConfigurationManager.AppSettings["Environment"];
            BrowserFactory.LoadApplication(subDomain);
        }

        [Then(@"the result should be on the screen")]
        public void ThenTheResultShouldBeOnTheScreen()
        {
            Test.CheckLoginPage();
        }
    }
}

Теперь получаю ошибку на шаге ThenTheResultShouldBeOnTheScreen () с Ошибка CS0120 Ссылка на объект требуется для нестатического поля, метода или свойства.

Я пытался сделать CheckLoginPage () статическим, но тогда все xpaths выдают ошибку.

Кто-нибудь может мне помочь, как это исправить?

Ответы [ 2 ]

0 голосов
/ 23 января 2019
public void ThenTheResultShouldBeOnTheScreen()
{
    Test test = new Test() // initialize new instance of class
    test.CheckLoginPage()  // call method
}

Если это не работает, вам нужно добавить ссылку

0 голосов
/ 23 января 2019

Вам просто нужно инициализировать класс и вызвать метод примерно так:

  public void ThenTheResultShouldBeOnTheScreen()
    {
        new Test().CheckLoginPage();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...