Можем ли мы распечатать объект вместе с xpath в объектной модели Page - PullRequest
0 голосов
/ 03 июля 2019

Я использую POM, используя testng + java + maven. Можем ли мы печатать по имени объекта в журнале или расширении отчета для целей отчетности?Я использую Log4j и extenreports.

Пример: Мой класс commonfunction содержит все действия, выполняемые для тестовых случаев:

public void click(By element) {
        WebElement webElement = getElement(element);
        try {

            Log.info("Clicking on the webelement " + element);
            webElement.click();
            ExtentTestManager.getTest().info("clicking on the webelement - " + element);
        }

        catch (NoSuchElementException e) {
            Log.error(e.getMessage());
            ExtentTestManager.getTest().fail(e);
            throw new TestException(String.format("The following element is not clickable: [%s]", element));
        }
    }

и в моем pageobject class, я объявляю xpath как:

By clearFormButton = By.xpath("//*[@id='createPopulation:j_idt198']");

and in my test step:
commonfunction.click(clearFormButton);

Actual output : Clicking on the webelement By.xpath: 
//*[@id='createPopulation:j_idt198']

Expected output : Clicking on the webelement clearFormButton - By.xpath: 
//*[@id='createPopulation:j_idt198']

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Вы можете использовать Механизм отражения , чтобы получить значение foundBy поля RemoteWebElement экземпляра класса, например:

java.lang.reflect.Field field = element.getClass().getDeclaredField("foundBy");
field.setAccessible(true);
String foundBy = field.get(element).toString();

enter image description here

Ваша реализация шаблона проектирования Page Object Model немного странная, кстати, я вижу, что в вашем тесте не должно быть никакого Seleniumвнутренние компоненты, так что вместо commonfunction.click(clearFormButton); на этапе тестирования вы должны иметь что-то вроде CreatePopulationPage page = myCurrentPage.clickCreatePopulationButton();

0 голосов
/ 03 июля 2019

e.extraInfo.get("*** Element info") даст вам локатор и его значение.

log.debug (e.extraInfo.get ("*** Информация об элементе"))

public void click(By element) {
        WebElement webElement = getElement(element);
        try {

            Log.info("Clicking on the webelement " + element);
            webElement.click();
            ExtentTestManager.getTest().info("clicking on the webelement - " + element);
        }

        catch (NoSuchElementException e) {
            log.debug(e.extraInfo.get("*** Element info"))
            Log.error(e.getMessage());
            ExtentTestManager.getTest().fail(e);
            throw new TestException(String.format("The following element is not clickable: [%s]", e.extraInfo.get("*** Element info"));
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...