Как получить имя веб-элемента?

Я хочу показать в отчете по экстентам название веб-элемента (в моем примере это "USER_LOGIN"); как мне это получить?

Я пытался использовать getText() но он отвечает пустым как результат.

Например, это код сайта:

<input class="form_control w100p ffg big" type="text" 
name="USER_LOGIN" value="lpelet2@gmail.com" maxlength="255" placeholder="E-mail">

и вот что я пытаюсь сделать:

public void verifyElementExist(WebElement weElem) throws ParserConfigurationException, SAXException, IOException
{
     try 
     {
       weElem.isDisplayed();
       extnTest.log(LogStatus.INFO, "Element exist - " + weElem.getText()); 
     }
     catch (Exception e)
     {
        ...
     }
}

2 ответа

Решение

Вы можете получить подробную информацию о разнице между getText а также getAttribute здесь
Код ниже получит имя или идентификатор:

String nameOrId = weElem.getAttribute("name") == null ? weElem.getAttribute("name") : weElem.getAttribute("id");
if (name == null)
   name = "uknown";

Не все элементы будут иметь идентификатор или имя, некоторые элементы, которые вы найдете с помощью селекторов xpath или css и приведенного выше кода, не будут работать для вас. Простой способ изменить ваш метод, как показано ниже:

public void verifyElementExist(String name, WebElement weElem) throws ParserConfigurationException, SAXException, IOException
{
     try 
     {
       weElem.isDisplayed();
       extnTest.log(LogStatus.INFO, "Element exist - " + name); 
     }
     catch (Exception e)
     {
        ...
     }
}

Ваш код должен возвращаться пустым!

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

Ваш код (getText()) вернул бы UserName, если бы HTML-код был примерно таким

 **UserName**

    <input class="form_control w100p ffg big" type="text" name="USER_LOGIN" value="lpelet2@gmail.com" maxlength="255" placeholder="E-mail">

Вы наверняка получили бы имя пользователя в своем журнале.

У большей части элемента профессионального проекта должно быть имя, но оно не обязательно. Таким образом, обещание имени элемента на уровне структуры не оправдано. Возможно, вам потребуется выполнить некоторую фильтрацию при входе в систему, если вы вообще хотите регистрировать их имена.

Другие вопросы по тегам