我有一个类似的XML文件。
<?xml version="1.0" encoding="UTF-8"?>
<elements area="Login" page="Login" description="Description about the generated class">
<element key="USERNAMETEXTBOX" findBy="ID" id="username" tag="input" name="" text="" xPath="//*[@id='username']"/>
<element key="PASSWORDTEXTBOX" findBy="ID" id="password" tag="input" name="" text="" xPath="//*[@id='password']"/>
<element key="LOGINBUTTON" findBy="XPATH" id="" tag="button" name="" text="" xPath="//input[@value='LOGIN']"/>
</elements>
读取这个XML文件,我需要生成一个看起来像这样的POJO类。
public class LoginPO extends CommonActionHelper{
LoginBean loginBeanObj= new LoginBean();
private WebDriver driver;
@FindBy(id="username")
private WebElement USERNAME;
@FindBy(id="password")
private WebElement PASSWORD;
@FindBy(xpath="//input[@value='LOGIN']")
private WebElement LOGIN;
}
基本上,page
标记的elements
属性附加了字符串&#34; PO&#34;应该是班级名称。 key
标记的element
属性必须是成员变量。根据{{1}}属性值(ID / XPATH),必须在注释findBy
请帮忙!
答案 0 :(得分:0)
使用XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="elements"/>
</xsl:template>
<xsl:template match="elements">
public class <xsl:value-of select="@area"/>PO extends CommonActionHelper{
<xsl:value-of select="@area"/>Bean <xsl:value-of select="translate(@area,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>BeanObj= new <xsl:value-of select="@area"/>Bean();
private WebDriver driver;
<xsl:apply-templates select="element"/>
}
</xsl:template>
<xsl:template match="element[@findBy='ID']">
@FindBy(id="<xsl:value-of select="@id"/>")
private WebElement <xsl:apply-templates select="." mode="variable"/>;
</xsl:template>
<xsl:template match="element[@findBy='XPATH']">
@FindBy(xpath="<xsl:value-of select="@xPath"/>")
private WebElement <xsl:apply-templates select="." mode="variable"/>;
</xsl:template>
<xsl:template match="element" mode="variable">
<xsl:choose>
<xsl:when test="substring(@key, string-length(@key) - 6) ='TEXTBOX'"><xsl:value-of select="substring(@key,1,string-length(@key)-7)"/></xsl:when>
<xsl:when test="substring(@key, string-length(@key) - 5) ='BUTTON'"><xsl:value-of select="substring(@key,1,string-length(@key)-6)"/></xsl:when> <xsl:otherwise>!!<xsl:value-of select="@key"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
处理:
$ xsltproc transform.xsl input.xml
public class LoginPO extends CommonActionHelper{
LoginBean loginBeanObj= new LoginBean();
private WebDriver driver;
@FindBy(id="username")
private WebElement USERNAME;
@FindBy(id="password")
private WebElement PASSWORD;
@FindBy(xpath="//input[@value='LOGIN']")
private WebElement LOGIN;
}