2016-06-21 9 views

Antwort

1

Implementieren Sie einfach Ihre eigenen Seitenobjekte, indem Sie die Prinzipien befolgen. Sie werden feststellen, dass es von Fall zu Fall viele verschiedene Dinge gibt (von Firma zu Firma) und es gibt keine "Einheitsgröße".

das gleiche Beispiel Verwendung als page factory ich etwas tun würde, wie (sehr Pseudo-Code):

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) 
     } 
    } 
} 

Je nachdem, was Sie testen Sie könnten auch einen ‚Kontext‘ injizieren müssen im Konstruktor - für ' polymorphe 'Seiten, die je nach dem ... Kontext ein anderes Verhalten haben.

I.e. ‚Protokollierung in‘ für das erste Mal, wenn Sie auf eine ‚Tour‘ Seite nehmen könnte danach aber zu einem ‚Armaturenbrett‘, so dass Sie so etwas wie haben könnte:

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) 
     } 
    } 
} 

Wie Sie bereits der Konstruktor sehen kann, kann ein abstrakter sein Seite :)