使用Selenium 2时,我在测试方法中分散了以下内容-
driver.findElement(By.name(usernameBox)).sendKeys(userEmailAddress);
我想在WebUtil类的静态方法中抽象它们-
public class WebUtils {
public static void type(WebDeriver driver, String locator, String testData) {
driver.findElement(By.name(locator)).sendKeys(testData);
}
}
方法调用将是-
WebUtils.type(driver, usernameBox, userEmailAddress);
我是否可以进一步改进它,例如,如果我可以避免每次都传递驱动程序对象,或者可以做更多事情?
最佳答案
我建议您扩展通常使用的基类,并在其中添加扩展方法。
这是扩展Selenium类的示例。
public class MySelenium : WebDriverBackedSelenium
{
public IWebDriver Driver { get; set; }
public ISelenium Selenium { get; set; }
public MySelenium(IWebDriver baseDriver, string baseUrl)
: base(baseDriver, baseUrl)
{
Driver = baseDriver;
}
public MySelenium(IWebDriver baseDriver, Uri baseUrl)
: base(baseDriver, baseUrl) { }
public static void type(String locator, String testData) {
Driver.findElement(By.name(locator)).sendKeys(testData);
}
}
您可以在所有测试使用的通用类中按以下方式对其进行初始化:
var driver =GetDriver(); //method to initialize driver
Selenium= new MySelenium(driver,baseUrl); //Selenium is a protected variable accessible from your tests
现在,您按如下方式调用type:
Selenium.type(userNameBox,"username");
附言:对不起,以上代码在c#中,但是您可以将其移植到Java。
关于java - 我可以改善包装方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6887927/