我有一个名为 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 类?
谢谢。