我有一个xml格式如下;
<TestCase>
<Step Sel = "deleteAllVisibleCookies" Obj = "All cookies" Val = ""></Step>
<Step Sel = "open" Obj = "URL" Val = "UserName:Password"></Step>
<Step Sel = "waitForElementPresent" Obj = "link=mobile" Val = ""></Step>
<Step Sel = "clickAndWait" Obj = "Mobile link" Val = ""></Step>
...
</TestCase>
<TestCase>
<Step Sel = "deleteAllVisibleCookies" Obj = "All cookies" Val = ""></Step>
<Step Sel = "open" Obj = "URL" Val = "UserName:Password"></Step>
<Step Sel = "waitForElementPresent" Obj = "link=mobile" Val = ""></Step>
<Step Sel = "clickAndWait" Obj = "Mobile link" Val = ""></Step>
...
</TestCase>
基于上面的xml文件,我正在创建一个对象。我想把所有的步骤都保存到二维数组中。所以一行就是一个测试用例。
int i=0;
int j=0;
for (int TC = 0; TC < TCLst.getLength(); TC++)
int k=0;
Node TCLstNode = TCLst.item(TC);
if (TCLstNode.getNodeType() == Node.ELEMENT_NODE)
{
NodeList StepLst = TCLstNode.getChildNodes();
Step = new String [TCCount][StepLst.getLength()];//defining total length
Sel = new String [TCCount][StepLst.getLength()];
Obj = new String [TCCount][StepLst.getLength()];
Val = new String [TCCount][StepLst.getLength()];
for (int Step = 0; Step < StepLst.getLength(); Step++)
{
Node StepLstNode = StepLst.item(Step);
if (StepLstNode.getNodeType() == Node.ELEMENT_NODE)
{
if (StepLstNode.getNodeName() == "Step")
{
Sel[i][k] = ObjectType.getAttribute(StepLstNode,"Sel");//returns value of Sel attribute
Obj[i][k] = ObjectType.getAttribute(StepLstNode,"Obj");
Val[i][k] = ObjectType.getAttribute(StepLstNode,"Val");
stepCountInTC++;
k++;
}
}//NodeType
}//for
i++;
stepCountInATCOfModule[j] = stepCountInTC;
j++;
stepCountInTC = 1;
}//TC if
我面临的问题是在对象创建之后,在打印任何一个二维数组时,我得到的输出是(这里我使用sel属性);
[[null,null,null,null,…][deleteallvisiblecookies,open,waitforelementpresent,clickandwait,…]
这里的问题是第一个测试用例值被保存为null。如果我对3个测试用例使用xml,那么前2个测试用例将保存为null,第3个用例将正确保存到数组中。
另外,请建议使用任何集合来代替二维数组。
2条答案
按热度按时间vwkv1x7d1#
在每个外部循环中,您都会用一个新的数组覆盖整个数组:
意味着在最后你只能找到step变量的最后一个结果。
你必须这样做:
oyxsuwqo2#
你错过了这里的支架:
这两行后面的代码与此无关
for
因为java认为您可以这样做:因此
k
永远都是0
.您的代码有多个问题需要解决。例如:
和