Как вы выполняете элемент JavaScript, используя PageObjects и @FindBy в Селене Java

1

Я создаю объекты страниц для навигации по сайту и рефакторинга хэшированного Java-проекта. У меня есть кусок кода, который вызывает кнопку JavaScript. Однако я не могу понять, как настроить это для использования в формате объекта страницы с @FindBy

Текущий объект страницы:

public CustomerLogin(WebDriver driver) {
        PageFactory.initElements(driver, this);
    }


    @FindBy(how = How.ID, using = "username")
    private WebElement userName;

    @FindBy(how = How.ID, using = "password")
    private WebElement password;

    @FindBy(how = How.XPATH, using = "//*[@id=\\\"loginPage\\\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]")
    private WebElement login;

    public void logIn(String userName, String password) {
        this.userName.sendKeys(userName);
        this.password.sendKeys(password);

}}

Часть, в которую я не могу попасть:

WebElement element = webDriver.findElement(By.xpath("//*@id=\"loginPage\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]"));

JavascriptExecutor executor = (JavascriptExecutor) webDriver;
executor.executeScript("arguments[0].click();", element);

Это работает, если я помещаю его в тестовый скрипт, но не могу понять, как преобразовать это в версию объекта страницы.

Теги:
selenium
pageobjects

1 ответ

0
Лучший ответ

Инициализируйте Исполнитель Javascript в конструкторе

    public class CustomerLogin{

    WebDriver driver;
    JavascriptExecutor executor;


    public CustomerLogin(WebDriver driver) {
        this.driver = driver;
        this.executor = (JavascriptExecutor) this.driver;
        PageFactory.initElements(driver, this);
        }

    @FindBy(xpath = "//*@id=\"loginPage\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]")
    private WebElement loginButton

    //method, for clicking loginButton  with JS Executor
    public void clickLoginButton() {
        executor.executeScript("arguments[0].click();", loginButton);
    }
}
  • 0
    Большое спасибо!
  • 0
    @ Ballard321: Добро пожаловать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню