Selenium2和webdriver的一个很好的工作示例
问题内容:
我一直在使用selenium 1,但现在想迁移到selenium2 / webdriver。老实说,我发现从selenium2 /
webdriver开始有点困难。本质上,我不知道如何在页面对象之间工作。这是我的示例:
public class LoginPage {
private final WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void loginAs(String username, String password) {
driver.get("http://url_to_my_webapp");
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("pwd")).sendKeys(password);
driver.findElement(By.className("button")).submit();
}
public static void main(String[] args){
LoginPage login = new LoginPage(new FirefoxDriver());
login.loginAs("user", "pass");
}
}
现在,在用户登录后,将重定向到另一个页面。据我了解,我现在应该制作一个代表当前页面的新页面对象……事实是我不知道怎么办?在哪里可以找到一些超越“ hello
world”水平的良好工作示例?我应该如何继续这个例子?
提前致谢!
问题答案:
这些站点都提供了一些示例:
http://luizfar.wordpress.com/2010/09/29/page-
objects/
http://www.wakaleo.com/blog/selenium-2-web-driver-the-land-where-page-
objects-are-king
该页面提供了有关使用PageFactory支持页面对象的一些详细信息:http
:
//code.google.com/p/selenium/wiki/PageFactory
您可以通过为每个页面创建一个类来扩展示例以使用页面对象,例如:
public class MainPage
{
private final WebDriver driver;
public MainPage(WebDriver driver)
{
this.driver = driver;
}
public void doSomething()
{
driver.findElement(By.id("something")).Click;
}
}
并更改loginAs以返回一个代表登录后浏览器导航到的页面的类:
public MainPage loginAs(String username, String password)
{
driver.get("http://url_to_my_webapp");
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("pwd")).sendKeys(password);
driver.findElement(By.className("button")).submit();
// Add some error checking here for login failure
return new MainPage(driver);
}