#groovy #geb
#groovy #geb
Вопрос:
Я пытаюсь переопределить несколько методов, таких как click() и LeftShift() / value(), чтобы зарегистрировать действие, используя любую библиотеку ведения журнала, такую как log4j / slf4j.
Может NavigatorFactory(http://gebish.org/manual/current/#navigator-factory ) будет использоваться для расширения / переопределения методов в классе EmptyNavigator и NonEmptyNavigator?
Если да, не могли бы вы предоставить указатель / шаги / фрагмент кода, который необходимо выполнить для достижения этой цели.
Если это невозможно, пожалуйста, предложите любой другой способ достижения этой цели.
Спасибо.
Ответ №1:
Благодаря @erdi (Marcin Erdmann) в списке рассылки geb, удалось добиться переопределения методов в NonEmptyNavigator. Ниже приведен фрагмент, который помог мне.
GebConfig.groovy
innerNavigatorFactory = { Browser browser, List<WebElement> elements ->
elements ? new NonEmptyCustomNavigator(browser, elements) : new EmptyCustomNavigator()
}
NonEmptyCustomNavigator.groovy
import geb.Browser
import geb.navigator.Navigator
import geb.navigator.NonEmptyNavigator
import groovy.util.logging.Log4j
import org.openqa.selenium.WebElement
@Log4j
class NonEmptyCustomNavigator extends NonEmptyNavigator{
NonEmptyCustomNavigator(Browser browser, Collection<? extends WebElement> contextElements) {
super(browser, contextElements)
}
@Override
Navigator click() {
ensureContainsSingleElement("click")
contextElements.first().click()
log.info("[" contextElements.first().toString() "] Click element")
this
}
}
EmptyCustomNavigator.groovy
import geb.Browser
import geb.navigator.EmptyNavigator
class EmptyCustomNavigator extends EmptyNavigator {
EmptyCustomNavigator(Browser browser) {
super(browser)
}
}
Комментарии:
1. Возможно, вам следует отдать должное @erdi (Марчину Эрдманну), сопровождающему Geb, за то, что он ответил на ваш вопрос в списке рассылки Geb. Здесь это выглядит так, как будто вы решили проблему в одиночку.
2. @kriegaex — отредактированный ответ с благодарностью. Целью ответа было поделиться знаниями, а не присвоить себе заслугу за ответ