0

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

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

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

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

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

谢谢 在此处输入图像描述

4

1 回答 1

0

您遇到了麻烦,因为Contains最终找不到您想要的元素。在变量声明/赋值之后放在Console.WriteLine("START" + element.Text+ "END");那里,我敢打赌你会看到除了“个人通知”之外的大量文本输出。

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

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

编辑

由于浏览器的怪异,有时通过文本搜索单个元素会出现问题。由于添加或删除了空格,有时向用户显示的文本值不一定等于 DOM 看到的文本值。基本上您可能认为您有“个人通知”,但 WatiN 可能会看到“个人通知”<-请参阅末尾的空格。在用尽简单/明显的方法后,我无法找到特定元素的运行方式是通过搜索我认为应该找到它的内容,然后闪烁找到的元素和/或写入WatiN 代码中的元素来迭代安慰。如果没有找到,请扩大搜索范围。根据需要重复。

于 2012-11-20T19:05:59.013 回答