【问题标题】:Manage selenium test project管理 selenium 测试项目
【发布时间】:2015-06-21 06:42:50
【问题描述】:

我有关于管理 selenium web 项目的一般问题,示例如下,我的问题是如何管理这些测试用例?(示例只有 3 个,实际测试用例数量超过 1000 个)

为子测试创建类好不好,比如登录类,所有与登录相关的测试都在这个类下?

是否有编写和管理测试用例的约定?

谢谢大家。

I create class with tests like:
        @Test   //Test1
        public  void logInFaildTest() {
            GridTest gridTest = new GridTest();
            WebDriver webDriver = gridTest.getWebDriver();
            String url = gridTest.getUrl();
            LoginPage logIn = new LoginPage(webDriver, url);
            String userName = "user";
            String pass="pass";
            logIn.login(userName, pass);
            WebElement errorMsg = webDriver.findElement(By.className("dijitToasterContent"));
            String actual = errorMsg.getAttribute("innerHTML");
            String expected="Incorrect user name or password. Please try again.";
            assertEquals(expected, actual);
            webDriver.close();
        }

        @Test
        public void loginSucsecc()
        {
            GridTest gridTest = new GridTest();
            String url = gridTest.getUrl();
            WebDriver webDriver = gridTest.getWebDriver();
            LoginPage logIn = new LoginPage(webDriver, url);
            String userName = "user";
            String pass="pass";
            logIn.login(userName, pass);
            String actual = webDriver.getCurrentUrl();
            String expected= url+"#lastmile/";
    //      webDriver.close();
            webDriver.quit();
            assertEquals(expected, actual);
        }

        @Test
        public void accountLock()
        {
            GridTest gridTest = new GridTest();
            String url = gridTest.getUrl();
            WebDriver webDriver = gridTest.getWebDriver();
            LoginPage logIn = new LoginPage(webDriver, url);
            String userName = "user";
            String pass="wrong";
            for(int i=0;i<11;i++){
                logIn.login(userName, pass);
                logIn.clearFileduNamePass();
            }
            WebElement msg = webDriver.findElement(By.id("dijit__TemplatedMixin_0"));       //block message
            String actual  = msg.getAttribute("innerHTML");
            int splitIndex= actual.indexOf(".<");
            actual = actual.substring(0, splitIndex);

            String expected= "Your account has been locked";
            webDriver.quit();
            assertEquals(expected, actual);
        }
    }

【问题讨论】:

    标签: java selenium-webdriver


    【解决方案1】:

    是的,您所做的只是好的。因此,所有与登录相关的操作都可以归为一个类,因此如果有任何更改,我们可以轻松管理

    对象维护

    您可以使用Page Object Model(POM),因为它是一种广泛使用且易于管理的方法。这用于管理您的对象更像是维护一个对象存储库

    如您所见,我们所做的只是查找元素并为这些元素填充值。

    这是一个小脚本。脚本维护看起来很容易。但随着时间的推移,测试套件会增长。随着您在代码中添加越来越多的行,事情变得越来越困难。

    脚本维护的主要问题是,如果 10 个不同的脚本使用相同的页面元素,那么该元素的任何更改都需要更改所有 10 个脚本。这既费时又容易出错。

    脚本维护的更好方法是创建一个单独的类文件,该文件将查找 Web 元素、填充它们或验证它们。此类可以在使用该元素的所有脚本中重用。以后如果 web 元素有变化,我们只需要修改 1 个类文件,而不是 10 个不同的脚本。

    这种方法称为页面对象模型(POM)。它有助于使代码更具可读性、可维护性和可重用性。

    测试数据维护

    接下来您要考虑的是用于运行具有不同数据集的测试用例的测试数据测试驱动方法

    POM 相同 您可以创建一个工厂类,它会在需要时为您提供一组数据,这样当您想要更改/修改数据时,您只需前往工厂进行更改即可。

    例如,您创建一个名为 LoginData 的类,该类具有 getValidCredentials getRandomCredentials 之类的功能来获取您的数据。如果您的应用程序每次运行都需要随机 emailid,那么您只需修改 getValidCredentials 部分即可 当您的应用程序主要在表单或用户数据上运行时,它将对您有很大帮助

    可重用组件

    第三件事是您创建的内容的可重用性。您也可以将validLogin重用于其他场景

    【讨论】:

    • WooW,谢谢,这真是个好答案。我还有一个关于页面对象模型(POM)的问题,我有动态网站,我们使用 dojotoolkit,所以我没有真正的静态页面,只有页面内容发生了变化,你建议在这样的网站中使用 POM 吗?
    • 您仍然可以使用它,但您必须模块化您的 POM,以便您可以在没有太多冗余的情况下重复使用它您可以参考dojo selenium 了解更多信息
    猜你喜欢
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多