页面对象模型返回操作而不是对象?

Page Object Model Returning Action Instead of Object?

拿起一个Java-Selenium框架,注意到前任拥有者有很多页面对象模型定义为java 类,但是没有返回一个driver.findElement(),他们返回 driver.findElement().click();

编辑:你们是对的,它没有返回

public void leftnav_home_link() { driver.findElement().click(); }

我以前从未见过这个,但这 valid/follows 页面对象模型的理想吗?

这会导致什么样的潜在问题?

没有意义,因为根据 source codeclick()WebElement 上只执行远程驱动程序命令而 returns 什么也没有:

public void click() {
    execute(DriverCommand.CLICK_ELEMENT, ImmutableMap.of("id", id));
}

就页面对象而言,如果您所指的 'action' 是对下一页的操作,则正常情况下会有一个带有普通构造函数和点击的 PageObjectX class方法返回下一页对象。点击方法可能是这样实现的,这并不罕见:

public class PageObjectX extends LoadableComponent {
    private final WebDriver driver;
    @FindBy(id = "go") private WebElement goB;
    PageObjectX {
        PageFactory.initElements(driver, this);
    }
    @Override
    protected void load() {
      driver.get("http://code.google.com/p/selenium/issues/entry");
    }

    @Override
    protected void isLoaded() throws Error {
      String url = driver.getCurrentUrl();
      assertTrue("Not on the issue entry page: " + url, url.endsWith("/entry"));
    }

    public PageObjectY clickGoToY() {
            driver.findElement( goB );
            return new PageObjectY();
    }
}