我一直试图将webdriver
注入步骤。我使用了this instructions,效果很好。
我们的想法是将WebDriver作为服务注入步骤类。在初始步骤中,您需要添加以下依赖项。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-spring</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
依赖注入涉及三个主要类。在这里,我们逐一介绍它们。
BaseUtil
BaseUtil是具有WebDriverof Selenium属性的类。这堂课非常简单:
public class BaseUtil {
private WebDriver driver;
public WebDriver getDriver() {return driver;}
public void setDriver(WebDriver driver) { this.driver = driver;}
}
挂钩
Hook类包含@Before, @After
。方法testInitialier()负责加载webDriver 文件并创建实例,而方法testTearDown()负责关闭浏览器。
public class Hook extends BaseUtil{
BaseUtil base;
@Before
public void testInitializer(){
File file = new
File(IgniteTaskApplication.class.getClassLoader().getResource("driver/chromedriver.exe").getFile());
String driverPath=file.getAbsolutePath();
System.out.println("Webdriver is in path: "+driverPath);
System.setProperty("webdriver.chrome.driver",driverPath);
base.setDriver(new ChromeDriver());
}
public Hook(BaseUtil base) {
this.base = base;
}
@After
public void tearDownTest(){
base.getDriver().close();
}
}
步骤
步骤类包含来自已编译功能文件的步骤。要在Eclipse中编译功能文件,您需要在Eclipse中安装Eclipse-Cucumber插件。
public class ClickButton_Steps extends BaseUtil{
BaseUtil base;
public ClickButton_Steps(BaseUtil base){
super();
this.base=base;
}
@When("^I clcik on the button$")
public void i_clcik_on_the_button() throws Throwable {
cb=new ClickButtonPage(base.getDriver());
cb.navigator();
}
// The other steps ...
}
我如何运行它?
打开要素文件 - &gt;以 - &gt;运行使用Junit运行
问题
我想知道运行方法的顺序是什么导致依赖注入?
我猜订单如下:
@Before
testInitializer()
方法
testInitializer()
位于Hook类中,因此需要创建Hook
类的实例。但是,我无法理解其余的步骤。也许它根本不是真的。我的意思是,我有一个功能代码,但我无法解释它是如何工作的?
答案 0 :(得分:1)
正如我所理解的,你使用JUnit作为黄瓜弹簧的测试框架。 JUnit提供以下生命周期。
当您使用注释@Before注释该方法时,它将在您拥有的每个测试之前调用此方法。 至于@After可用于清理资源并在每次测试后调用。
运行测试时的测试流程:
此外,您可以使用日志记录(slf4j)代替System.out.println,并且更容易跟踪测试流程。