我已经在黄瓜中创建了三个Java和功能文件,每个Java文件都有以下代码部分。
@Before
public void startbrowser() {
System.setProperty("webdriver.gecko.driver","/Users/firatkaymaz/eclipse-workspace/SeleniumTest/drivers/geckodriver/geckodriver");
driver = new FirefoxDriver();
因此,一旦我尝试运行我的一个黄瓜文件(以-> cucumber功能运行),就会打开三个浏览器,因为位于三个java文件中的所有@Before批注都正在执行。我该如何摆脱呢?我想将名为TestCase1.feature的功能文件与Case1.java匹配,因此当我执行相关功能文件时,将执行Case1,因此只能按预期打开一个浏览器。有什么主意吗?
答案 0 :(得分:0)
在Cucumber中,您可以在pom文件中使用picocontainer,然后可以在一个类中分离通用方法“ startbrowser”。请参阅https://www.toolsqa.com/selenium-cucumber-framework/sharing-test-context-between-cucumber-step-definitions/
答案 1 :(得分:0)
另一种方法是对类使用@ScenarioScoped批注。您需要添加
cucumber-guice
到您的pom文件或其他文件。
然后,您可以将此注释添加到创建驱动程序的类中,并且在整个场景中将只有一个实例。
http://www.thinkcode.se/blog/2017/08/16/sharing-state-between-steps-in-cucumberjvm-using-guice