这是我正在测试一个Web应用程序的场景,我要做的第一件事就是编写一个测试,检查是否存在'报告no.x'在每一页上。 注意:X的值在页面上变化,就像在主页上一样,在其他页面上是1,它是3等。 有没有办法,我可以做到这一点减少我的代码行数。喜欢而不是为每个页面编写IF Else我导航到可以有一个解决方案,我可能必须写如果只有一次,该块每次执行打开一个新页面。
答案 0 :(得分:0)
您可以通过页面对象模式和基类之间的组合来实现所需的行为。
public class BingMainPage
{
private readonly IWebDriver driver;
private readonly string url = @"http://www.bing.com/";
public BingMainPage(IWebDriver browser)
{
this.driver = browser;
PageFactory.InitElements(browser, this);
}
[FindsBy(How = How.Id, Using = "sb_form_q")]
public IWebElement SearchBox { get; set; }
[FindsBy(How = How.Id, Using = "sb_form_go")]
public IWebElement GoButton { get; set; }
[FindsBy(How = How.Id, Using = "b_tween")]
public IWebElement ResultsCountDiv { get; set; }
public void Navigate()
{
this.driver.Navigate().GoToUrl(this.url);
}
public void Search(string textToType)
{
this.SearchBox.Clear();
this.SearchBox.SendKeys(textToType);
this.GoButton.Click();
}
public void ValidateResultsCount(string expectedCount)
{
Assert.IsTrue(this.ResultsCountDiv.Text.Contains(expectedCount), "The results DIV doesn't contains the specified text.");
}
}
如果这是您的某个页面,您可以创建一个基类来派生。在那里你可以有X值属性和wait方法。子类应该从这个类派生并传递X的确切值。这样你就可以在所有的测试中重用逻辑。
您可以在此处找到更详细的示例:http://automatetheplanet.com/page-object-pattern/