2016-06-21 36 views

回答

1

只需按照原则实现您自己的页面对象。你会发现有很多事情不同,从案件到案件(公司到公司),没有“一刀切”的事情。

使用相同的例子page factory我会做这样的事情(很伪代码):

class Home { 
    construct(WebDriver) { 
     this.webdriver = WebDriver 
    } 

    fillSearch(text) { 
     webdriver.findById('x').send_keys(text); 

    } 

    submit(isValid) { 
     if (isValid) { 
      return new ResultsPage(this.webdriver); 
     } else { 
      return self(this.webdriver) 
     } 
    } 
} 

取决于你测试你可能也必须注入在构造一个“语境” - 对'多态“页面具有不同的行为,具体取决于...上下文。

I.e. “伐木”,第一次可能会带你到一个“游”的页面,但自那以后,“仪表盘”,所以你可能有类似:

class Login { 
    construct(WebDriver, context) { 
     this.webdriver = WebDriver 
    } 

    fillUsername(text) { 
     webdriver.findById('username').send_keys(text) 
    } 

    fillPassword(text) { 
     webdriver.findById('password').send_keys(text) 
    } 

    submit(isValid) { 
     if (isValid) { 
      if (context.isFirstTimeLogin) { 
       return new Tutorial(this.webdriver, context) 
      } else { 
       return new Dashboard(this.webdriver, context) 
      } 
     } else { 
      return self(this.webdriver) 
     } 
    } 
} 

正如你已经可以看到构造函数可以是抽象的页面:)

相关问题