PageFactory.initElements возвращает incompatible types

page-factory
page-object
java
selenium
Теги: #<Tag:0x00007fedb9fd92c0> #<Tag:0x00007fedb9fd9090> #<Tag:0x00007fedb9fd8f28> #<Tag:0x00007fedb9fd8d20>

(Test17) #1

Проблема (Вопрос) заключается …
Всем привет! Я новичок в автоматизированном тестировании, совсем недавно начала изучать PageFactory.
При использовании PageFactory.initElements() он возвращает ошибку:

Incompatible types
Required: com.test.LoginPage (имя моего класса)
Found: void

Не понимаю, в чем проблема, почему класс возвращает void.
Инициализацию элементов в конструкторе не провожу (прочитала, что это не нужно, если мы возвращаем дочернюю страницу через инициализацию PageFactory).
Просто, если метод класса возвращает новую страницу - я прописываю return PageFactory.initElements(driver, AnyPage.class);
Подскажите, пожалуйста, чем вызвано появление вышеописанной ошибки и что я делаю не так.
Привожу код двух классов

public class HomePage {

private WebDriver driver;

@FindBy(linkText = "teachingsite.MessageController")
private WebElement mesController;

public HomePage(WebDriver driver) {
    this.driver =  driver;
}

public LoginPage openMesController() {
    mesController.click();
    return PageFactory.initElements(driver, LoginPage.class);
}

}


public class LoginPage {
private WebDriver driver;

@FindBy(id = "login")
public WebElement loginField;

@FindBy(id = "password")
private WebElement passwordField;

@FindBy (xpath ="//input[@class='save']" )
private WebElement buttonLogin;

public LoginPage(WebDriver driver) {        
    this.driver = driver;

}

public MessageListPage signIn(String login, String password) {
    loginField.clear();
    passwordField.clear();
    loginField.sendKeys(login);
    passwordField.sendKeys(password);
    buttonLogin.click();
    return PageFactory.initElements(driver, MessageListPage.class);
}

}

Ошбику вызывают PageFactory.initElements() в каждом из вышеприведенных классов.


(Taras) #2

скинь полний стек трейс


(Test17) #3

(Maxim Karpenko) #4

А не проще ли вызов PageFactory всунуть в конструктор пейджей, а в методе возвращать новый обьект?
Тогда точно конфликта не будет


(Test17) #5

да, так и сделала
проблема уже решена)