51Testing软件测试论坛

标题: selenium的pagefactoy.initElements(driver, this)是干嘛用的? [打印本页]

作者: 小丫头amy    时间: 2016-4-26 11:53
标题: selenium的pagefactoy.initElements(driver, this)是干嘛用的?
不明白pagefactory是干吗用的?请高手们指导

作者: kexinqw11    时间: 2016-4-26 14:47
一个封装好的类,里面放的都是页面元素
作者: wwwqjpcom    时间: 2016-4-30 17:15
pagefactory 是Webdriver为了支持PageObject(页面对象)模式,实现的一个类。
比如下面我们定义一个页面类:
public class GoogleSearchPage {
    @FindBy(how = How.NAME, using = "q")
    private WebElement searchBox;

    public void searchFor(String text) {
        searchBox.sendKeys(text);
        searchBox.submit();
    }
}

这里使用PageFactory,会自动初始化元素
GoogleSearchPage page = PageFactory.initElements(driver, GoogleSearchPage.class);
然后page.searchFor("test") 就可以直接用了。里面的searchBox这个元素已经完成了初始化。

再来看看不用PageFactory的例子。
public class GoogleSearchPage {
        private WebDriver driver;
            private WebElement searchBox;

    public  GoogleSearchPage(Webdriver driver){
                this.driver = driver;
                 searchBox = driver.findElement(By.name("q"))
            }

    public void searchFor(String text) {
        searchBox.sendKeys(text);
        searchBox.submit();
    }
}

然后
GoogleSearchPage page = new GoogleSearchPage(driver);  元素的初始化主动在页面对象的构造方法里完成初始化。
然后page.searchFor("test") 。
或者也可以在searchFor的方法里直接driver.findElement(By.name("q")),先初始化了searchBox

以上是个人理解,希望有帮助
作者: 灰灰渣渣    时间: 2016-5-1 21:50
楼主可以直接看方法initElements 里面实现了什么 就知道怎么回事了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2