我正在尝试使用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>
</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>
</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>
</TD>
<!-- S_STATUS_CONTENT_BOTTOM -->
</TABLE>
页面中还有其他表格。我感兴趣的是唯一一个格式如上的格式,我只对第三列感兴趣(如果有问题,那么它会说“是”。如果有问题则会说“不”)。
上面的表是唯一一个class = TABLEBORDER的表 如何访问每个表格行的第3列?
答案 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
上进行了测试