Selenium 每一页检查一个元素的存在

Selenium 每一页检查一个元素的存在,selenium,webdriver,Selenium,Webdriver,下面是我测试web应用程序的场景,我要做的第一件事是编写一个测试,检查每个页面上是否存在“report no.x”。 注意:X的值会随着页面的变化而变化,就像在主页上一样,在其他页面上是1,在其他页面上是3等等。 有什么方法可以减少代码行数吗?比如,不必为我导航到的每一页都写IF-Else,有没有一种解决方案,可以让我只写一次IF-Else,并且每次打开新页时都会执行该块。通过页面对象之间的组合,可以实现所需的行为模式和基类 public class BingMainPage { pri

下面是我测试web应用程序的场景,我要做的第一件事是编写一个测试,检查每个页面上是否存在“report no.x”。 注意:X的值会随着页面的变化而变化,就像在主页上一样,在其他页面上是1,在其他页面上是3等等。
有什么方法可以减少代码行数吗?比如,不必为我导航到的每一页都写IF-Else,有没有一种解决方案,可以让我只写一次IF-Else,并且每次打开新页时都会执行该块。

通过页面对象之间的组合,可以实现所需的行为模式和基类

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的精确值。这样,您可以在所有测试中重用逻辑


您可以在这里找到更详细的示例:

非常感谢Anton。为什么我没有想到:我很高兴听到它对你有用。如果这能解决你的问题。你能给这个问题打分并关闭它吗?因为它仍然在未回答的队列中?