Возможно ли работать с @FindBy используя selenide?

Не могу понять как создать драйвер через selenide

В селениуме это выглядит вот так -

public void init(final WebDriver driver) {
    PageFactory.initElements(driver, this);
}

Но я не использую WebDriver

Не советую пихать PageFactory и @FindBy в selenide.

Пробуйте так

  public WebDriver driver;

    @BeforeClass
    public void setUp() {
    System.setProperty("webdriver.chrome.driver", "src/main/resources/drivers/windows/chromedriver.exe");
    Configuration.browser = "chrome";

}

Место @FindBy используйте

SelenideElement btnSignIn = $(By.xpath("//*[@class='top-bar']//*[text()='Sign up']")),
1 лайк

Тем Селенид и хорош, что многие вещи делает ненужными. В частности, вам больше не нужно вызывать PageFactory. Вот же есть пример на гитхабе:

1 лайк

Я не собираюсь его туда “пихать” если это делать необязательно.

Мой класс с тестами выглядит так
image
Я хочу что бы объекты этих классов существовали только в момент вызова их методов, и я думал FindBy поможет мне в этом.

К сожалению вариант…

SelenideElement btnSignIn = $(By.xpath("//[@class=‘top-bar’]//[text()=‘Sign up’]")),

…не подходит, так как при создании объекта страницы в классе с тестами, селенайд этой строчкой пытается найти объект что-бы присвоить переменной, но объекта может и не существовать на текущей веб-странице

Вы уверены? Попробуйте, все же, такой подход
Насколько я знаю, код выше не инициализирует элемент, а только запоминает локатор
Инициализация будет при первом взаимодействии с элементом
Например,

SelenideElement btnSignIn = $(By.xpath("// [@class=‘top-bar’]// [text()=‘Sign up’]")); //просто знаем, как искать элемент
btnSignIn.click(); //вот только здесь будет искать элемент и кликать
2 лайка

На сколько я помню, Selenide хоть при объявлении через $ хоть через @FindBy садит ленивую проксю, а при обращении к объекту ищет его уже.

2 лайка

Всё таки помогло! Спасибо всем