我参与了公司的多个项目进行手动测试。当我们在项目中有这么多测试用例时,我们必须自动化回归套件。现在问题是我必须有一个可移植的框架,适用于我移动到的任何项目。我只是导入我的java项目(作为现有的maven项目)并在编写后开始执行selenium测试用例。截至目前,这就是我的工作方式,但我不知道这是否是最佳方式。
source folders
可以使用。/myproject/src/main/java
和/myproject/src/test/java
。 /myproject/src/test/java
文件夹中,我创建了一个具有setup()
和teardown()
方法的类。 WebDriver driver;
或UserLogin userlogin = new UserLogin();
/myproject/src/test/java
中创建了更多类,其功能名称为“CreateZoo”,并使用Define类扩展它们。稍后我在/myproject/src/main/java
内的类中使用这些类的方法,例如:一个Main包类将是“DailyTests”,我在这里调用/myproject/src/test/java
中的类的方法chromedriverexe
,properties file
,data.xls
。我在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项目?
答案 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中的类
这只是我的想法。请回复你的想法。