如何获取网页元素名称?

时间:2018-12-23 19:04:59

标签: selenium junit extentreports

我想在范围报告中显示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)
     {
        ...
     }
}

2 个答案:

答案 0 :(得分:0)

您可以获得有关getTextgetAttribute here之间的区别的详细信息。
下面的代码将获得名称或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)
     {
        ...
     }
}

答案 1 :(得分:0)

您的代码必须返回空白!

我相信您对name作为属性和name作为Element的名称感到困惑。在您的情况下,输入框具有一个名称作为属性,您可以在用户单击“提交”按钮后使用它来查找元素,或者开发人员可以使用它来解析数据。

如果HTML代码类似这样,您的代码(getText())将返回UserName

 **UserName**

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

您肯定会在日志中输入UserName。

专业项目中的大多数元素都应使用名称,但没有义务拥有它。因此,在框架级别承诺元素名称是不合理的。如果您根本不想记录其名称,则可能需要在记录时进行一些过滤。