Próbuję wstrzyknąć webdriver
do kroków. Użyłem this instructions i działa dobrze.W jaki sposób wtrysk zależność działa w Ogórek?
Pomysł polega na wstrzyknięciu WebDriver do klas czynności jako usługi. W początkowym kroku musisz dodać następującą zależność.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-spring</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
Istnieją trzy główne klasy, które są zaangażowane w zastrzyk zależności. Tutaj przedstawiamy je jeden po drugim.
BaseUtil
BaseUtil jest klasa, która ma atrybut dla WebDriverof selenu. Klasa jest dość prosta:
public class BaseUtil {
private WebDriver driver;
public WebDriver getDriver() {return driver;}
public void setDriver(WebDriver driver) { this.driver = driver;}
}
Hook
klasa Hook zawiera @Before, @After
. Metoda testInitialier() jest odpowiedzialna za załadowanie pliku webDriver file i utworzenie instancji, natomiast metoda testTearDown() jest odpowiedzialna za zamknięcie przeglądarki.
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();
}
}
Kroki
a klasa kroki zawiera kroki, które weszły z skompilowanego pliku funkcji. Aby skompilować plik funkcji w Eclipse, musisz zainstalować wtyczkę Eclipse-Cucumber w Eclipse.
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 ...
}
Jak uruchomić?
Otwórz plik cecha -> Uruchom jako -> Uruchom z JUnit
pytań
Zastanawiam Jaka jest kolejność metod działa w sposób, który prowadzi do wtrysk zależności?
Chyba kolejność jest następująca:
- JUnit nazywa
@Before
metodę, która jesttestInitializer()
testInitializer()
jest w klasie Hook więc musi uczynić wystąpienieHook
klasie.- Powoduje wywołanie elementu constuctor klasy Hook.
Ale nie mogę zrozumieć pozostałych kroków. Może nawet to wcale nie jest prawdą. Mam na myśli, Mam funkcjonalny kod, ale nie mogę wyjaśnić, jak to działa?