0

我有一个名为 Navigation 的类,它具有用于导航网站页面的简单功能。

    public class Navigation
{
    public IWebElement Inner { get; set; }

    private IWebElement Next => Inner.FindElement(By.ClassName("Next"));

    public void NextPage() => Next.Click();
}

上面的导航出现在每个页面上,所以我把它放在一个 BasePage 类中(根据页面对象模型)

    public class BasePage
{
    protected IWebDriver driver;

    public Navigation navigation => new Navigation { Inner = driver.FindElement(By.ClassName("footer"))};
}

在我的测试课中,我有以下内容

public class Test 
    {
      BasePage basepage = new BasePage();

      basepage.navigation.NextPage();
      basepage.navigation.NextPage(); //NOT WORKING
    }

单击下一步按钮第一次有效,但第二次失败。我的 Navigation 类的NextPage()行出现 StaleElementReferenceException 。我明白它发生的原因 - 我已经导航到一个新页面,因此页脚下一个元素现在都是旧的。

我可以在 Navigation 类中再次找到 Next 按钮,但我希​​望 Navigation 类保持页脚元素的范围内(即我不想做一个驱动程序.FindElement(By.ClassName("Next ")) 并再次在整个页面中搜索“下一步”按钮)

有没有一种干净的方法可以让我再次找到页脚元素?理想情况下来自 BasePage 类?

谢谢。

4

0 回答 0