Как напечатать имя переменной WebElement в отчете экстента? - PullRequest
0 голосов
/ 01 марта 2019

Конечная цель - получить имя переменной WebElement для создания отчетов.

Ниже приведен код, который у меня есть.

Класс A:

Class A{

      public void Click(WebElement element)
      {
            element.click();
            System.out.println("Clicked on"+ element);
      }
}

КлассB:

class B extends A{

     @FindBy(xpath = "//li[@class='login-menu']//a[text()='Log In']")
     WebElement link_Log_In;

     Click(link_Log_In);
}

Требуемый выход:

Щелкните по ссылке_Log_In

Фактический вывод:

Нажмите [[ChromeDriver: chrome в XP (acc46d4d382511d7b18396d4a4dddd30)] -> xpath: // li [@ class = 'login-menu'] // a [text () = 'Log' ']]

Также я хотел бы напечатать тот же требуемый вывод в отчете экстента, используя метод afterClickOn (элемент WebElement, драйвер WebDriver) в WebDriverEventListener.

Я создал каркас таким образом, чтобы результаты WebDriverEventListenerпечатаются в отчетах по экстентам по мере необходимости, но, тем не менее, не могут распечатать требуемый вывод, как указано выше.

Пожалуйста, сообщите, если я что-то упустил в приведенном выше коде и добиться того же в afterClickOn (элемент WebElement, драйвер WebDriver)метод в WebDriverEventListener

Ниже находится прослушиватель событий afterClickmethod

public void afterClickOn(WebElement element, WebDriver driver) {
        System.out.println("Clicked On"+element); // this is to print in console
        ExtentManager.getTest().log(Status.valueOf(element), "clicked on"); // this is to print in extent report
    }

1 Ответ

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

Я не верю, что существует простой способ получить имя, которое вы дали элементу (например, метод getName ()).Самое близкое, что я могу придумать, это сделать что-то вроде следующего:

public class ElementNaming {

    //Create a hashmap that stores the name of the element as a string
    public static HashMap<WebElement, String> webElementKeys = new HashMap<>();

    public static By by = By.id("hplogo");

    public static WebElement instantiateWebElementAndName(String name, By by) {
        webElementKeys.put(driver.findElement(by), name);
        return driver.findElement(by);
    }

    public static void main(String[]args) {
        driver.get("https://www.google.com/");
        WebElement element = instantiateWebElementAndName("element", by);
        System.out.println("Element name: " + webElementKeys.get(element));
    }
}

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