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