Расширение NavigatorFactory для регистрации действий, таких как click (), sendKeys () - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь переопределить несколько методов, таких как click () и leftShift () / value (), чтобы зарегистрировать действие, используя любую библиотеку журналов, такую ​​как log4j / slf4j.

Может ли NavigatorFactory (http://gebish.org/manual/current/#navigator-factory) использоваться для расширения / переопределения методов в классах EmptyNavigator и NonEmptyNavigator?

Если да, не могли бы вы предоставить указатель / шаги / фрагмент кода, который необходимо сделать для достижения этой цели.

Если это невозможно, предложите другой способ достижения этой цели.

Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

Благодаря @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)
 }
}
...