Итак, у меня возникла проблема с запуском моего тестового фреймворка, написанного огурцом (я бы сказал, что я только начинаю). Вот код https://github.com/nokedajunky/cucumber2
Когда я запускаю файл "Register.feature", он не работает:
Error:(13, 55) java: cannot find symbol
symbol: variable driver
location: class stepdefs.RegisterStepDefs
Я что не так с классом «RegesterStepDefs», где я инициализирую объект LandingPage - я не могу передать «драйвер» в качестве параметра. Похоже на ошибку, с которой я долго не справляюсь. Любые предложения приветствуются
Класс BasePageObjectSetUp на страницах пакета;
public class BasePageObjectSetUp {
private WebDriver driver;
public BasePageObjectSetUp(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public WebDriver getDriver() {
return driver;
}
}
Класс LandingPage на страницах пакета;
public class LandingPage extends BasePageObjectSetUp {
@FindBy(xpath = "//@[//div[contains(@class,'menu-body')]//span[contains(text(),'Logowanie')]]")
private WebElement buttonLogowanie;
@FindBy(xpath = ".//*[@class=register-wrapper]")
private WebElement buttonRejestracja;
// calling the inherited construtor from PageObject class
public LandingPage(WebDriver driver){
super(driver);
}
public void clickButtonRejestracja() throws InterruptedException {
//WebDriverWait wait = new WebDriverWait(getDriver(), 30);
//wait.until(ExpectedConditions.elementToBeClickable(buttonRejestracja));
Thread.sleep(5000);
buttonRejestracja.click();
}
}
Класс LandingPage в пакете stepdefs;
public class BaseSetUp {
private WebDriver driver;
@Before
public void setUp() {
System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"\\src\\main\\resources\\drivers\\chromedriver.exe");
//Disable geo localization popup
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.managed_default_content_settings.geolocation", 2);
options.setExperimentalOption("prefs", prefs);
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://www.vozilla.pl");
}
@After
public void cleanCookies() {
driver.manage().deleteAllCookies();
driver.close();
}
}
RegisterStepDefs класс в пакете stepdefs;
public class RegisterStepDefs {
private LandingPage landingPage = new LandingPage(driver); **<<<< I got a problem here**
@Given("^User navigates to the register page one$")
public void userNavigatesToTheRegisterPageOne() throws InterruptedException {
landingPage.clickButtonRejestracja();
}
}
В частности, обратите внимание, что № 1 в списке не по теме упоминает, что «Вопросы, требующие помощи при отладке (« почему этот код не работает? ») Должны включать желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для ее воспроизведения. в самом вопросе. "
Хотя ссылки на сторонний код для справочных целей - это нормально, на ваш вопрос должен быть дан ответ по существу, и люди не должны переходить по этим ссылкам.
Слишком много работы, чтобы напечатать все это, но вы должны использовать внедрение зависимостей. Огурец поддерживает это




Пожалуйста, возьмите Тур и прочтите документацию в Центр помощи. В частности, вы должны прочитать о как задать хороший вопрос и о том, какие вопросы по теме здесь, в SO.