当使用Page对象模型和页面工厂时,如何在SeleniumWebDriverC#中应用隐式等待



我在Test类的SetUp方法和页面对象的Constructor中添加了隐式等待。我需要申请等待所有测试方法。但它不起作用。有人能帮忙吗。我使用了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();
}
}
}

最好有一个公共类,其中可以将基本的初始化内容作为方法,如下所示,并在测试方法开始之前在所有测试类中调用该方法。

并将父类BaseTest派生到所有测试类。

我对你的代码做了一些修改,如下所示。

公共类BaseTest{

IWebDriver驱动程序;

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

}}

页面对象:

命名空间ProjectName.PageObjects{类搜索页面{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{类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();
}

}}

相关内容

  • 没有找到相关文章

最新更新