挑选一个Java-Selenium框架,并注意到前一个所有者有很多被定义为java类的页面对象模型,但它们返回driver.findElement()
而不是返回driver.findElement().click();
。 }
public void leftnav_home_link() { driver.findElement().click(); }
我之前从未见过这个,但这是否有效/遵循页面对象模型的理想?
这会导致什么样的潜在问题?
答案 0 :(得分:1)
没有意义,因为根据source code,click()
上的WebElement
只执行远程驱动程序命令并且不返回任何内容:
public void click() {
execute(DriverCommand.CLICK_ELEMENT, ImmutableMap.of("id", id));
}
答案 1 :(得分:1)
就页面对象而言,如果' action'你引用的是对下一页的动作,通常的做法是让一个带有普通构造函数的PageObjectX类和一个返回下一页对象的click方法。 click方法可能会像这样实现,这并不罕见:
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();
}
}