Как применить неявное ожидание в Selenium WebDriver C# при использовании объектной модели страницы и фабрики страниц - PullRequest
0 голосов
/ 22 апреля 2020

Я добавил неявное ожидание в метод SetUp класса Test, а также в конструктор объекта страницы. Мне нужно подать заявку на все методы испытаний. Но это не работает. Может кто-нибудь помочь, пожалуйста. Я использовал NUnit framework

Объект страницы:

    namespace ProjectName.PageObjects
    {
        class SearchPage
        {
            IWebDriver driver;

            public SearchPage(IWebDriver driver)
            {
                this.driver = driver;
                PageFactory.InitElements(driver, this);
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(40);
            }
            [FindsBy(How = How.XPath, Using = "//a[text()='Search']")]
            IWebElement search;

     public void SearchClick()
     {
           search.Click();
     }
    }
  }

Тестовый класс:

namespace ProjectName
{
    class SearchTestClass
    {
        IWebDriver driver;
        SearchPage search;

        [SetUp]
        public void SetUp()
        {            
                driver = new ChromeDriver();
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(40);
               //Go to URL
               //Login
        }

        [Test]
        public void SearchTest()
        {
            search.SearchClick();
        }
}
}

1 Ответ

0 голосов
/ 22 апреля 2020

Было бы лучше иметь один общий класс, в котором вы можете использовать базовые c компоненты инициализации в качестве метода, как показано ниже, и вызывать этот метод во всех ваших классах Test до запуска метода Test.

И наследовать родительский класс BaseTest для всех ваших тестовых классов.

Я внес некоторые изменения в ваш код, как показано ниже.

publi c Class BaseTest {

драйвер IWebDriver;

 public static void Initialization() {
    driver = new ChromeDriver();
    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(40);
    //Go to URL
    //Login

}}

Объект страницы:

пространство имен ProjectName.PageObjects {class SearchPage {IWebDriver driver;

        public SearchPage(IWebDriver driver)
        {
            this.driver = driver;
            PageFactory.InitElements(driver, this);

        }
        [FindsBy(How = How.XPath, Using = "//a[text()='Search']")]
        IWebElement search;

 public void SearchClick()
 {
       search.Click();
 }
}

}

Тестовый класс:

Пространство имен ProjectName {class SearchTestClass {

    SearchPage search;

    [SetUp]
    public void SetUp()
    {            
           //Just call the Initialization method in every test class like here before the test methods starts execution
            Initialization();
    }

    [Test]
    public void SearchTest()
    {
        search.SearchClick();
    }

}}

...