Я слышал, что не рекомендуется устанавливать экземпляр и методы WebDriver как статические.Я удалил его из своего кода, но теперь у меня проблема: я получил ошибку в классе: «LoginPage.java» в методе: «setLoginAndPassword ()»:
Метод setValueInField (By, String) не определено для типа LoginPage
и:
Метод clickIn (By) не определен для типа LoginPage
Какрешить это?Может наследство?Но Java не поддерживает множественное наследование (класс LoginPage.java должен был бы расширять ClickFunctions и InputFunctions
Мой код: package: utils, класс: Initialize.java:
public class Initialize {
protected WebDriver driver;
@BeforeClass
public void setUp(){
System.setProperty("webdriver.gecko.driver", "c:\\tests\\geckodriver.exe");
driver = new FirefoxDriver();
}
}
package:test, класс: MainTests.java
public class MainTests extends Initialize{
@Test
public void test(){
LoginPage loginPage = new LoginPage(driver);
loginPage.getLoginPage();
HomePage homePage = loginPage.setLoginAndPassword();
}
}
пакет: объекты страницы, класс: LoginPage.java:
public class LoginPage{
public LoginPage(WebDriver driver){
this.driver = driver;
}
private WebDriver driver;
private By login = By.cssSelector("#Login");
private By password = By.cssSelector("#Password");
private By submit = By.cssSelector("#submit");
public LoginPage getLoginPage(){
driver.get("https://verytest.pl");
return this;
}
public HomePage setLoginAndPassword(){
setValueInField(login,"anylogin");
setValueInField(password,"anypass");
clickIn(submit);
return new HomePage(driver);
}
}
пакет: функции, класс: ClickFunctions.java:
public class ClickFunctions extends Initialize{
public void clickIn(By locator){
new WebDriverWait(driver,120).until(ExpectedConditions.elementToBeClickable(locator));
driver.findElement(locator).click();
}
}
пакет: функции, класс: InputFunctions.java:
public class InputFuntions extends Initialize{
public void setValueInField(By locator, String fieldValue){
new WebDriverWait(driver,120).until(ExpectedConditions.visibilityOfElementLocated(locator));
driver.findElement(locator).sendKeys(fieldValue);
}
}