【发布时间】:2018-07-28 22:12:58
【问题描述】:
我正在使用 Cucumber for Java 和 Selenium 构建一个测试套件。而我的项目结构差不多是这样的:
- src/test/java:这是我实现测试步骤的地方。
- src/test/resources/features:这是我有功能文件的地方。
- src/test/resources/seleniumdrivers:这是我放置 chromedriver.exe 的地方。
现在,我所做的是在 src/test/java 中添加一个 Hooks.java 类,并使用 @Before 钩子设置驱动程序路径:
@Before
public void setUpDriver(){
System.setProperty("webdriver.chrome.driver", "src\\test\\resources\\seleniumdrivers\\chromedriver.exe");
}
但是,由于此方法将在每个场景之前运行,因此我想找到一种更好的方法来设置路径,因此只执行一次。请注意,我希望在我的项目结构中包含驱动程序并使用系统属性对其进行设置(我的意思是,我不想将驱动程序放在我的文件系统中的某个位置并将其添加到 PATH 环境变量中)。
有没有更好的方法来做到这一点?
【问题讨论】:
-
你可以在 hooks 类中使用静态标志来运行一次,也可以在 runner 类中使用 BeforeClass(对于 junit5 为 BeforeAll)。参考这个——automationpanda.com/2017/03/03/…
-
你想在所有场景之前设置驱动路径还是只启动一次浏览器(即在第一个场景之前)
-
@Grasshopper 问题是,
@BeforeAll不适用于 Cucumber 的 Java 实现 (stackoverflow.com/questions/19770103/…)。但是静态标志听起来是个好主意,谢谢! -
看看我的回答。它可能会解决您的问题。
-
@Floella 我说的是junit junit.org/junit5/docs/current/user-guide/… 的BeforeAll 注释,而不是黄瓜红宝石。这将进入黄瓜跑步者课程。
标签: java selenium cucumber cucumber-jvm