如何获取网页元素名称?

How to get web element name?

我想在 Extent Report 中显示 Web 元素的名称("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)
     {
        ...
     }
}

您可以详细了解 getTextgetAttribute 之间的区别。
下面的代码将获取名称或 ID:

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

并非所有元素都有 ID 或名称,您会发现使用 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)
     {
        ...
     }
}

您的代码必须 return 空白!

我相信您混淆了名称作为属性和名称作为元素的名称。在您的情况下,输入框有一个名称作为属性,您可以使用它来查找元素,或者开发人员可以在用户点击提交按钮后使用它来解析数据。

如果 HTML 代码是这样的,您的代码 (getText()) 将具有 returned UserName

 **UserName**

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

您肯定会在您的日志中找到 UserName。

专业项目中的大多数元素都应该有一个名称,但没有义务一定要有。因此,在框架级别承诺元素名称是不合理的。如果您想记录他们的名字,您可能需要在记录时进行一些过滤。