如何为每个表行选择第3列?

时间:2012-02-14 20:37:00

标签: c# .net c#-4.0 watin

我正在尝试使用WatiN获取表中的TD值。问题是我无法通过Id选择表(因为它丢失了)。我可以根据课程选择吗?

<TABLE WIDTH="100%" CELLSPACING=0 CELLPADDING=5 BORDER=0 class="TABLEBORDER">
<TR>

<TH class=HEADTEXT>
Target
</TH>
<TH class=HEADTEXT>
Trigger<br>enabled?
</TH>
<TH class=HEADTEXT>
Account
</TH>
<TH class=HEADTEXT>
Password<br>changed?

</TH>
<TH class=HEADTEXT>
Error message<br>(if any)
</TH>
<!-- S_STATUS_ROW -->

<TR>

<TD valign=top class=CELLTEXT>
RACF
</TD>
<TD valign=top class=CELLTEXT>
No
</TD>
<TD valign=top class=CELLTEXT>
USERNAME1
</TD>
<TD valign=top class=CELLTEXT>
Yes
</TD>
<TD valign=top class=CELLTEXT>
&nbsp;

</TD>
<!-- S_STATUS_ROW -->

<TR>

<TD valign=top class=CELLTEXT>
Domain Name
</TD>
<TD valign=top class=CELLTEXT>
No
</TD>
<TD valign=top class=CELLTEXT>
FirstName.LastName
</TD>
<TD valign=top class=CELLTEXT>
Yes
</TD>
<TD valign=top class=CELLTEXT>
&nbsp;

</TD>
<!-- S_STATUS_ROW -->

<TR>

<TD valign=top class=CELLTEXT>
NotesWeb
</TD>
<TD valign=top class=CELLTEXT>
No
</TD>
<TD valign=top class=CELLTEXT>
USERNAME1
</TD>
<TD valign=top class=CELLTEXT>
Yes
</TD>
<TD valign=top class=CELLTEXT>
&nbsp;

</TD>
<!-- S_STATUS_CONTENT_BOTTOM -->
</TABLE>

页面中还有其他表格。我感兴趣的是唯一一个格式如上的格式,我只对第三列感兴趣(如果有问题,那么它会说“是”。如果有问题则会说“不”)。

上面的表是唯一一个class = TABLEBORDER的表 如何访问每个表格行的第3列?

2 个答案:

答案 0 :(得分:2)

您可以使用Find.BySelector(""),这与JQuery非常相似。例如:

var element = browser.Element(Find.BySelector("Table TD"));

答案 1 :(得分:1)

要识别表格,请使用Find.ByClass()

有很多方法可以获取特定列的值,但为了简单起见,我倾向于遍历表行;现在很容易理解,6个月后你回到代码。

代码:向控制台打印第4列的内容(上面的HTML中的是值),循环从1开始,而不是0,所以第一行被忽略为TH元素不被视为表格单元格。

IE browser = new IE();
browser.GoTo("[yourURL]");

Table theTable = browser.Table(Find.ByClass("TABLEBORDER"));

for (int i = 1; i < theTable.OwnTableRows.Count; i++)
{
    Console.WriteLine("column value:" + theTable.OwnTableRows[i].TableCells[3].Text);
}

以上内容已经在WatiN2.1,IE9,Win7

上进行了测试