我基本上试图在Selenium中运行java中的示例页面对象框架。我试图运行一些站点和论坛给出的一些示例类。但由于某种原因,它似乎没有用。我不知道我是否错过任何东西。请帮忙。谢谢
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
答案 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测试框架以自动生成报告