1

我的 RFT 代码是

table_cell = find(atList(
                atDescendant(".class" , "Html.TD")
                ,atChild(".text" , "normal")
            ),false
        );

它找到了两个对象。我只期待一个,因为我指定我想要带有直接孩子的 TD,其文本为“正常”。请参阅屏幕截图。

如果我然后在两个结果上使用 .getMappableParent() 方法发现我得到两个表(我在一个表之后),请参见图片。

谁能解释我怎么得到两个对象?

在此处输入图像描述

关于atChild 和 RFT find() 方法的一些信息

atChild -- 一个或多个必须与起始测试对象的直接子对象匹配的属性

4

1 回答 1

2

我不是 100% 确定,但我认为 RFT 使用“.text”作为元素的 XML 样式属性。 http://www.w3schools.com/dom/prop_element_text.asp

您正在查找 atList(),这意味着使用前面的规则结果作为输入一个接一个地应用查找规则,因此:

1- 搜索所有属于 RootTestObject 子项的 TD

2- 在这些 TD 中,搜索每个具有“正常”作为文本子项的 TD

但由于“.text”返回每个子节点中包含的所有文本,因此您会找到 2 个与此属性匹配的 TD。不过,我不确定文本匹配是如何工作的,我想不是精确匹配,而是一种正则表达式方式或包含。

您可以尝试从外表开始查找

table_cell = table_outer().find(atList(atDescendant(".class" , "Html.TD") ,atChild(".text" , "normal") ),false);

或通过访问您的查找中的正确结果

real_table_cell = table_cell[1];

希望这可以帮助。

于 2012-07-03T08:31:32.213 回答