我已经在selenium webdriver中编写了一个程序,但对于我的下一个项目,我希望通过使用更好的编程技术使其更易于维护。我要关注的主要部分是启动浏览器一次(1个会话)并运行10个不同的测试,然后关闭浏览器,但我不知道如何做到这一点。使用JUnit这就是我目前的项目布局:
package example1;
public class TestBase { //main class
@Before
public void setup () {
//launch browser
}
@Test //all test run here
public void test1(){
login();
homepage();
}
@After
public void teardown(){
//close browser
}
}
package example1;
public class login(){
//do some action
}
package example1;
public class homepage(){
//do some action
}
package example1;
public class storeMethods(){
//all methods are stored which are then called by different classes
}
我不确定@Test注释是否应该在主类中,或者它是否应该在它自己的类(login(),homepage())中,因为我在某处读到测试不应该相互依赖。我没有太多java经验,但我更愿意学习。我只需要一些关于最佳实践的指导以及如何编写良好的可维护性测试,如果有人可以帮助我或指出我正确的方向,那么我真的很感激。
答案 0 :(得分:1)
我建议重复使用浏览器不遵循更好的自动化编程习惯。
重复使用浏览器将导致测试不稳定且不可靠,并且存在测试间依赖性。
在我看来,进行原子自包含测试要好得多。
如果测试运行时存在问题,那么请查看并行性并使用selenium grid
答案 1 :(得分:1)
虽然Robbie Wareham所说的是正确的,但重复使用浏览器并不是一个好主意,你说你的总体目标是可维护性。
我发现提高可维护性的技术是页面对象模式,它具有与之交互的单独函数。
页面对象模式将选择器与其余代码分开。这样,如果页面上的元素发生变化,并且您的测试使用该元素5次......您只需在1个位置更改代码。包含isLoaded()也是标准的,这是一个可用于识别您是否已经在所需页面上的功能,因此您不会重新加载页面。
我还建议让您的测试不直接处理您创建的页面。如果你有一个工具栏,你必须用它来转到X页...然后工具栏改变,所以你想要的链接在子菜单中,然后每次在测试中你使用该链接,你将不得不更改方法以单击该链接。 创建与页面交互的selenium命令集将使您的测试更高级且易于阅读。