2016-06-21 1 views
1

Я пытаюсь использовать EventFiringWebDriver на объектной модели страницы. Как это может быть достигнуто, поскольку методы PageFactory.initElements() принимают только экземпляры WebDriver, а не экземпляры EventFiringWebDriver. Кастинг EventFiringWebDriver для WebDriver здесь не работает.Как использовать EventFiringWebDriver в модели объекта страницы

ответ

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

Как вы уже можете видеть конструктор может быть абстрактным страница

Смежные вопросы