使用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/

10-11 03:20
查看更多