我不久前开始使用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
就维护代码问题而言,我没有看到任何好处,或者我做错了什么? 提前谢谢!
答案 0 :(得分:0)
Selenium 2不会对测试脚本的可维护性提供太多改进,尽管支持包中有一些类现在可用,您可以使用它们来实现PageObjects。
例如,请查看PageFactory类。
与selenium 2的最大区别在于它与浏览器的通信方式。 Selenium 1使用javascript服务器进行通信,而selenium2 webdriver使用browserapi直接与浏览器通信。这有几个好处。