我有一个名为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”))并再次搜索整个页面以获取Next按钮)
是否有一种干净的方式可以再次找到页脚元素?理想情况下,从BasePage类中?
感谢。