【发布时间】:2020-05-17 13:34:36
【问题描述】:
我一直在查看许多带有页面对象模型的 Selenium 框架示例,它们通常显示:
[Test]
public void Test_Login_To_Home_Page()
{
var login = new LoginPage(this.driver);
login.LoginAs(“user”, “password1”);
var home = new HomePage(this.driver);
home.GoTo();
Assert.IsTrue(home.IsAt(), "failed to login successfully");
}
如果页面对象类中的内容(方法、Web 元素)是静态的,并且它们暴露给驱动程序类的实例,它看起来像:
[Test]
public void Test_Login_To_Home_Page()
{
LoginPage.LoginAs(“user”, “password1”);
HomePage.GoTo();
Assert.IsTrue(HomePage.IsAt(), "failed to login successfully");
}
我看不到通过创建页面对象类的实例可以获得什么。后一种方法看起来更干净,它消除了测试中的大量噪音,并且更容易培训缺乏编程技能的没有经验的自动化测试人员。
使用后一种方法有什么固有的缺点吗?我想不出任何地方似乎都在推广这种方法,他们似乎都使用前一种方法。有什么缺点吗?
如何调用驱动程序以在页面对象中查找元素的示例:
using static SeleniumWebDriver;
public class housesPage
{
private static IWebElement houses_SelectMenu => Instance.FindElement(By.Id("housesSelect"));
在 SeleniumWebDriver 类中:
public static class SeleniumWebDriver
{
public static IWebDriver Instance { get; set; }
public static IWebDriver CreateWebDriver()
{
Instance = CreateChromeDriver();
return Instance;
【问题讨论】:
标签: c# selenium-webdriver automation static-methods pageobjects