我的RFT代码是
table_cell = find(atList(
atDescendant(".class" , "Html.TD")
,atChild(".text" , "normal")
),false
);
它找到两个对象。我只期待一个,因为我指定我想让TD与直接孩子得到文本“正常”。见屏幕截图。
如果我在两个结果上都使用.getMappableParent()方法,我会得到两个表(我在一张表后)看到图片。
有人可以解释为什么我有两件物品?
有关atChild and RFT find() method
的一些信息atChild - 必须与起始测试对象的直接子项匹配的一个或多个属性
答案 0 :(得分:2)
我不是百分百肯定,但我认为RFT使用“.text”作为元素的XML样式属性。 http://www.w3schools.com/dom/prop_element_text.asp
您正在找到atList(),这意味着使用前面的规则结果作为输入,一个接一个地应用查找规则,因此:
1-搜索所有属于RootTestObject的孩子的TD
2-在那些TD中,搜索每个具有“正常”作为文本孩子的TD
但是由于“。text”返回 ALL 每个子节点中包含的文本,您会找到2个与此属性匹配的TD。 不过,我不确定文本匹配是如何工作的,我认为不是完全匹配,而是一种Regexp-way或者包含。
您可以尝试从外表开始查找
table_cell = table_outer()。find(atList( atDescendant(“。class”,“Html.TD”) ,atChild(“。text”,“normal”) ),假 );
或通过查找
中的正确结果real_table_cell = table_cell [1];
希望这有帮助。