Как выбрать 3-й столбец для каждой строки таблицы? - PullRequest
0 голосов
/ 15 февраля 2012

Я пытаюсь получить значения TD внутри таблицы, используя WatiN.Проблема в том, что я не могу выбрать таблицу по 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>

На странице есть другие таблицы.Меня интересует только тот, который отформатирован, как указано выше, и меня интересует только 3-я колонка (где написано ДА .. если возникнет проблема, то будет НЕТ).

Таблица выше является единственной с классом = TABLEBORDER, как я могу получить доступ к 3-му столбцу каждой строки таблицы?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Вы можете использовать Find.BySelector(""), что очень похоже на JQuery.Например:

var element = browser.Element(Find.BySelector("Table TD"));
1 голос
/ 15 февраля 2012

Для идентификации таблицы используйте 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

...