我一直在嘗試將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硒的屬性的類。類是相當簡單:
public class BaseUtil {
private WebDriver driver;
public WebDriver getDriver() {return driver;}
public void setDriver(WebDriver driver) { this.driver = driver;}
}
掛鉤
掛鉤類包含@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 ...
}
我該如何運行它?
打開該功能的文件 - >運行方式 - >使用JUnit
問題
我想知道什麼是其所導致的方式運行方法的順序運行依賴注入?
我猜的順序如下:
- Junit的調用
@Before
方法是testInitializer()
- 的
testInitializer()
在鉤子類,所以它需要做出Hook
類的一個實例。 - 它導致調用Hook類的構造函數。
但是,我無法理解其餘的步驟。也許它甚至不是真的。我的意思是,我有一個功能代碼,但我無法解釋它是如何工作的?