我的webdriver方法

时间:2011-04-27 11:36:38

标签: java webdriver selenium-webdriver

我不久前开始使用webdriver。我的方法如下:

public class PageObjectRepresentationClass {
    protected WebDriver driver;  
    public PageObjectRepresentationClass(WebDriver driver){
    this.driver = driver;
    }
    public void open(String url){
    driver.get(url);        
    }
    public void close(){
    driver.quit();
    }
     public void fillInputFieldByXPath(String xpath, String value){
    WebElement inputField = driver.findElement(By.xpath(xpath));
    inputField.clear();
    inputField.sendKeys(value);
    }   
     public PageObjectRepresentationClass clickButtonByClassXPath(String xpath){
    driver.findElement(By.xpath(xpath)).click();
    return new PageObjectRepresentationClass(driver);
    }
     ...
     // Basically I make here every possible method that deals with my pages
}

现在,在我的Junit测试中,我有:

public class CreateCompanyGermany {

    @Before
    public void pagefactory() {
    page = PageFactory.initElements(new InternetExplorerDriver(), PageObjectRepresentationClass.class); 
    page.open(url);
    }
    @After
    public void closeBrowser(){
    page.close();
    }
    @Test
    public void internetApplying(){
    page.open(url );
    page.chooseOptionFromDropDownMenuById("String", "String");
    page.fillInputFieldByName("String", "String");
    page.fillInputFieldByName("String", "String");
    page.chooseOptionFromDropDownMenuById("String", "String");
    // So from here on I'm just calling methods defined in PageObjectRepresentationClass
}

这是我使用webdriver的方法。现在我想知道的是,与Selenium 1相比,应该从哪里获益?我的意思是如果我的方法是正确的,那么只有Selenium1与selenium2 / webdriver的不同之处在于,在webdriver中,人们可以制作处理页面的唯一方法,所以不要写

    selenium.someMethod(); // derives from selenium API

现在我将

    page.myMethod();  // in this particular case derives from PageObjectRepresentationClass

就维护代码问题而言,我没有看到任何好处,或者我做错了什么? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

Selenium 2不会对测试脚本的可维护性提供太多改进,尽管支持包中有一些类现在可用,您可以使用它们来实现PageObjects。

例如,请查看PageFactory类。

与selenium 2的最大区别在于它与浏览器的通信方式。 Selenium 1使用javascript服务器进行通信,而selenium2 webdriver使用browserapi直接与浏览器通信。这有几个好处。

  1. 它会让测试运行得更快,因为它们不必通过javascript服务器
  2. 你不受约束 (安全)限制javascript 了。
  3. 你不需要(但是     还可以使用)服务器     执行你的脚本。