我可能会建议考虑添加“页面类”的概念。基本上,我没有将元素添加到测试本身,而是创建了一个单独的类,该类具有返回元素的方法。
例如,登录页面将包含三个元素,因此有 3 个方法:
public class LoginPage
{
private IWebDriver driver { get; set; }
public CSCView_SalesAspx(IWebDriver driver) { this.driver = driver; }
public IWebElement Id { get { return driver.FindElement(By.Id("login_id")); } }
public IWebElement Pw { get { return driver.FindElement(By.Id("login_pw")); } }
public IWebElement SubmitBtn { get { return driver.FindElement(By.Id("submitBtn")); } }
}
现在您所要做的就是实例化该类,然后与该方法进行交互。您的元素应该始终是“新鲜的”,因为您每次都在进行查找(无需任何额外工作)。
LoginPage loginPage = new LoginPage(driver);
loginPage.Id.SendKeys("myName");
loginPage.Pw.SendKeys("myPw");
loginPage.SubmitBtn.Click();
最好的一点是,如果页面发生更改,您不必重写每个测试,只需更改一个页面类即可修复损坏的测试。