必须有" Selenium Automation"的内容/惯例。项目?

时间:2014-02-07 12:59:41

标签: java maven selenium-webdriver

我参与了公司的多个项目进行手动测试。当我们在项目中有这么多测试用例时,我们必须自动化回归套件。现在问题是我必须有一个可移植的框架,适用于我移动到的任何项目。我只是导入我的java项目(作为现有的maven项目)并在编写后开始执行selenium测试用例。截至目前,这就是我的工作方式,但我不知道这是否是最佳方式。

  1. 我创建了一个maven项目,很少有source folders可以使用。/myproject/src/main/java/myproject/src/test/java
  2. /myproject/src/test/java文件夹中,我创建了一个具有setup()teardown()方法的类。
  3. 我通过名称“Define”创建另一个类,其中我定义变量/字符串/类对象示例:此类具有WebDriver driver;UserLogin userlogin = new UserLogin();
  4. 我在/myproject/src/test/java中创建了更多类,其功能名称为“CreateZoo”,并使用Define类扩展它们。稍后我在/myproject/src/main/java内的类中使用这些类的方法,例如:一个Main包类将是“DailyTests”,我在这里调用/myproject/src/test/java中的类的方法
  5. 除此之外,我在主>>资源文件夹中保留chromedriverexeproperties filedata.xls
  6. 我在CommonFunctions class extends Define中也有/myproject/src/test/java,在这里我编写了常用的java函数,我经常使用它们:

    class CommonFunctions extends Define {
    
    /*
     * 
     * Click linktext, click partial, name,id,xpath,css, classname
     */
    static class clik {
    
        static void txt(String locator) {
            new WebDriverWait(driver, 60).until(
                    ExpectedConditions.presenceOfElementLocated(By
                            .linkText(locator))).click();
        }
    

    和myproject的另一个常见的fucntions类如下:我已经为用户登录编写了一个很长的方法,我在需要的地方调用它。
    所以,我上面的方式是好的,或者我应该按每个页面的名称编写类,例如“LoginPage.java”
    这个类将使用pagefactory定义html元素(截至目前我不使用页面工厂。)

    我是selenium2.0的追求者,我没有太多的经验。
    如何美化代码和创建/维护selenium项目?

2 个答案:

答案 0 :(得分:0)

我会考虑实施黄瓜(含Selenium):http://cukes.info/

它将使您的代码更好,更清晰,更易于维护和阅读。

答案 1 :(得分:0)

您的代码结构相当理想。

但我确实有一些建议: -

  • 在我看来,我们可以根据页面而不是功能来定义类,从而提高测试代码的可维护性。

考虑一个场景,您必须点击管理帐户>编辑>更改地址。可能存在类似的情况,您必须单击管理帐户>编辑>更改用户名。在这两种情况中,前两个步骤是相同的​​。但是它们必须在ChangeAddress类中编写两次,在ChangeUserNameClass中编写其他一次。如果编辑属性发生变化,我们必须更改地方代码。因此可维护性和冗余代码更少。

可以通过根据功能定义类来避免这种情况。 Class1包含clickManageAccount(),Class2包含clickEdit(),Class3包含clickChangeAddress()和changeUserName()。 因此,只需基于功能在Junit类中组合上述方法的方法。

这将确保每个测试都是模块化和可维护的。页面工厂也可以在每个班级中有效使用。

  • 请考虑以下文件夹结构: -

/ myproject / src / test / java / page - 包含扩展定义类的所有页面类

/ myproject / src / test / java / common - 包含所有公共类并定义类

/ myproject / src / test / java / scenarios - 包含带有@Before [setUp()],@ After [tearDown()]和@Test方法的JUnit测试类。 @Test Methods使用页面类中的方法来组合特定场景所需的方法。

/ myproject / src / main / resources - 包含资源,如chromedriverexe,属性文件,data.xls

/ myproject / src / main / java / - 包含类似DailyTests的类,它们使用/ myproject / src / test / java / scenarios中的类

这只是我的想法。请回复你的想法。