Watin无法将对象转换为特定类型

时间:2014-12-08 23:12:03

标签: watin

我试图检查一下td。我使用以下方法将物体拉出dom:

string tdSelector = "#myTD";
TableCell td = ie.Element(Find.BySelector(tdSelector)) as TableCell;

由于强制转换,返回null。所以下面的代码

Element elm = ie.Element(Find.BySelector(tdSelector));

工作正常。

更多elm.TagName返回" TD"

TableCell td = (TableCell)ie.Element(Find.BySelector(tdSelector));

抛出错误:无法转换类型为' WatiN.Core.ElementContainer`1 [WatiN.Core.Element]'输入' WatiN.Core.TableCell'。

所以对象在那里,我可以实现它,但我不能把它当作TableCell对象。我看到有一种方法。作为<>所以我试过.As< TableCell>()也不起作用。

有什么想法吗?我的目标是获得一个TableCell对象。

3 个答案:

答案 0 :(得分:3)

我对此也很好奇,我终于找到了办法。您无法将Element投射到特定于HTML标记的类,但是您可以创建一个全新的TableCell并使用Element来构建它。

Element element = ie.Element("someId");
TableCell cell = new TableCell(element.DomContainer, element.NativeElement);

如果Element 表格单元格,则不会引发异常。

答案 1 :(得分:0)

据我所知,如果没有真正破坏框架,这是不可能的。开箱即用它不是为了做到这一点(据我所知)。理想情况下,获取您想要的对象,而不是尝试投射它。

 ie.TableCell(Find.BySelector(tdSelector))

答案 2 :(得分:0)

您可以通过以下方式获取表格的所有表格单元格:

    foreach (TableRow tr in details.TableRows)
    {
        TableCellCollection tcs = tr.TableCells;
        for (int b = 0; b < tcs.Count; b++)
        {
             // each cell for each row and search whatever you need in here.
        }
    }

希望这有帮助。