我试图覆盖一些方法,如click()和leftShift()/ value(),使用log4j / slf4j之类的任何日志库来记录操作。
NavigatorFactory(http://gebish.org/manual/current/#navigator-factory)可用于扩展/覆盖EmptyNavigator和NonEmptyNavigator类中的方法吗?
如果是,请提供指针/步骤/代码片段,以实现此目的。
如果不可能,请建议任何其他方式来实现这一目标。
谢谢。
感谢@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)
}
}