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

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

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

    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 ответ

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

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

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

public 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;

        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();
    }

}}

Другие вопросы по тегам