Каков наилучший подход, чтобы следовать всем объектам в одном месте в XML-файле или создавать каждый класс? - PullRequest
0 голосов
/ 28 февраля 2019

В POM каждый файл класса создается для каждой страницы и помещает объекты страницы в соответствующие классы.Что делать, если мы поддерживаем все объекты в файле XML или JSON.Какой самый эффективный способ?Потому что модель pom заставляет вызывать каждый элемент для каждого отдельного действия.Например, в приведенном ниже методе:

public void clickOnElement(WebElement element) {
element.click();
}

Как мы можем обработать это динамически, если объекты размещены в каждом классе?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы можете использовать объектную модель страницы JSON.Внедрив JQuery в консоль, вы можете заставить браузер создать для вас модельный объект страницы

Для справки: http://www.testautomationguru.com/selenium-webdriver-scriptless-page-object-design-pattern-part-1/

0 голосов
/ 28 февраля 2019

Основной принцип в объектной модели страницы состоит в том, что все, что связано со страницей, содержится в классе для этого объекта страницы.Вы не должны хранить локаторы и т. Д. Вне этого файла класса.

Сказав это, если у вас есть несколько общих вспомогательных методов, например, clickOnElement() и т. Д., Вы бы сохранили их в Utilsи затем вызовите их из вашего объекта страницы.

Ваш объект страницы будет содержать

private final By usernameLocator = By.id("username");
private final By passwordLocator = By.id("password");
private final By signInButtonLocator = By.id("signin");

...

public void login(string username, string password)
{
    Utils.findElement(usernameLocator).sendKeys(username);
    Utils.findElement(passwordLocator).sendKeys(password);
    Utils.clickElement(signInButtonLocator);
}

Ваш класс Utils будет содержать вспомогательные методы, такие как

public WebElement findElement(By locator)
{
    return driver.findElement(locator);
}

public void clickElement(By locator)
{
    findElement(locator).click();
}

В качестве альтернативыкаждый объект вашей страницы может наследоваться от BasePage класса, который содержит эти вспомогательные методы.Это изменит Utils.findElement() на findElement().В любом случае, это вопрос предпочтений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...