如何在eclipse中执行页面对象程序?

时间:2013-09-28 05:05:31

标签: java eclipse selenium

我基本上试图在Selenium中运行java中的示例页面对象框架。我试图运行一些站点和论坛给出的一些示例类。但由于某种原因,它似乎没有用。我不知道我是否错过任何东西。请帮忙。谢谢

我试过这些例子 - https://weblogs.java.net/blog/johnsmart/archive/2010/08/09/selenium-2web-driver-land-where-page-objects-are-king

http://www.wakaleo.com/blog/selenium-2-webdriver-quick-tips-page-object-navigation-strategies

    package google;

    import org.junit.After;
    import org.junit.Before;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.support.PageFactory;
    import org.testng.annotations.Test;

    public class WhenAUserSearchesOnGoogle {

private GoogleSearchPage page;

@Before
public void openTheBrowser() {
    page = PageFactory.initElements(new ChromeDriver(), GoogleSearchPage.class);
    page.open("http://google.co.nz/");
 }

@After
public void closeTheBrowser() {
    page.close();
}

@Test
public void whenTheUserSearchesForCatsTheResultPageTitleShouldContainCats() {
    page.searchFor("cats");
    //assertThat(page.getTitle(), containsString("cats") );
}   
    }

以上是我正在使用的页面工厂类。

以下是Page对象。

    package google;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    //import org.openqa.selenium.firefox.FirefoxDriver;



    public class GoogleSearchPage {

protected WebDriver driver;

private WebElement q;   

private WebElement btnG;

public GoogleSearchPage(WebDriver driver) {
    this.driver = driver;
}

public void open(String url) {
    driver.get(url);
}

public void close() {
    driver.quit();
}

public String getTitle() {
    return driver.getTitle();
}

public void searchFor(String searchTerm) {
    q.sendKeys(searchTerm);
    btnG.click();
}

public void typeSearchTerm(String searchTerm) {
    q.sendKeys(searchTerm);
}

public void clickOnSearch() {
    btnG.click();
}
    }

堆栈跟踪说 失败:当TheUserSearchesForCatsTheResultPageTitleShouldContainCats

2 个答案:

答案 0 :(得分:1)

您的WebElement不受任何选择器的约束,因此PageFactory失败。 (它不知道如何找到这些)

在每个网络元素之前添加@FindBy注释。 e.g

@FindBy(css = "[name='q']") public WebElement q;
@Findby(css = "[name='btnG]") public WebElement btnG;

@Findby下方会显示红色下划线。只需执行 Ctrl + Shift + O 即可将其导入。

答案 1 :(得分:0)

安装TestNG测试框架以自动生成报告