Watin:当没有任何东西可以识别时,如何迭代表行

时间:2012-11-20 03:34:21

标签: watin

我尝试了不同的解决方案来获取表节点,我可以将其识别为现有dom中文本节点的下一个兄弟。

我使用了以下代码,但nextsibling始终为null。

  var element = browser.Element(Find.ByText(t => t.Contains("Individual Notices")));

                        if (element != null)
                        {
                           var table = element.NextSibling as Table;
                        }

如果任何人可以指导我如何遍历“个人通知”节点旁边的表格中的行,我将不胜感激。

由于 enter image description here

1 个答案:

答案 0 :(得分:0)

你遇到麻烦,Contains最终找不到你想要的元素。在变量声明/赋值之后立即将Console.WriteLine("START" + element.Text+ "END");放在那里,我敢打赌,除了“Individual Notices”之外,你会看到很多文本输出。

如果您需要的Dom元素只有文本“Individual Notices”文本,只需删除lambda调用并拥有Find.ByText("Individual Notices"),然后table将拥有您的表格。

如果这不是一个选项,因为文本不是已知值,您可能能够搜索特定的元素类型(例如:Div),以便在lambda包含结果时不返回父节点。

修改

由于浏览器的奇怪,有时按文本搜索单个元素是有问题的。有时,由于添加或删除了空格,向用户显示的文本值不一定等于DOM看到的文本值。基本上你可能认为你有“个人通知”但WatiN可能会看到“个人通知”< - 最后看到空格。在简单/明显的方法耗尽之后,我无法找到特定元素的方法是通过搜索我认为应该找到它然后闪烁元素来迭代WatiN代码中的元素找到和/或写入控制台。如果未找到,请扩大搜索范围。根据需要重复。