java - Selenium2 和 webdriver 的一个很好的工作示例

标签 java webdriver selenium-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);                   
}

关于java - Selenium2 和 webdriver 的一个很好的工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5558617/

相关文章:

java - 从其他 onCreate 方法启动一项 Activity

java - 绘图 : centering objects of different size

java - 信息 : WebSocket connection closed, 代码:尝试运行 websocket 示例时出现 1006

C# 扩展 Selenium Webdriver 类

java - 为什么我无法关闭警报弹出窗口?

java - 使用JAVA为EC2实例设置标签

node.js - 如果没有找到怎么办... Selenium node.js

python - 如何使用selenium设置亚马逊产品页面的大小?

python - 尽管正确(?)xpath,Selenium Webdriver Python 仍找不到元素

python - 构建函数以清除字段和 send_keys