Как применить неявное ожидание в 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();
}
}}