Как найти предметы на столе Grid с помощью WATIN
У меня возникли проблемы с поиском элемента в таблице - он либо пуст, либо я получаю исключение массива за пределами границ. Это то, что я пытаюсь сделать.
Это образец HTML, который я анализирую со страницы....
<table id="ctl00__defaultCont__ctrlHeader__ctrlHeader_p_Providerd33">
<tr>
<td class="w90 ta-right lbl">
<span>Provider ID</span>
</td>
<td class="fieldWithNoBorderClass">
<div id="ob_iT_providerIDContainer" class="ob_iTCN" style="width:220px;"><div class="ob_iTL"></div><div class="ob_iTR"></div><div class="ob_iTC"><input name="ctl00$_defaultContent$_ctrlHeader$_ctrlHeader$_providerID" type="text" value="P13040620" id="ctl00__defaultContent__ctrlHeader__ctrlHeader__providerID" class="ob_iTIE" /></div><div class="ob_iCallbackScript" style="display:none;"></div></div>
</td>
</tr>
Вот с чего я начал:
Я в основном пытаюсь найти идентификатор ПРОВАЙДЕРА. Например...
Table table = browser.Table(Find.ById("ctl00__defaultContent__ctrlHeader__ctrlHeader_p_Provider3"));
TableRowCollection tableRows = table.TableRows;
TableRow row = tableRows[3];
ElementCollection rowData = row.Elements;
string name = rowData[0].OuterText;
string membername = rowData[1].OuterText;
2 ответа
Я делаю что-то вроде этого, и это работает на одном из моих проектов. Может быть, это даст вам подсказку.
ПРИМЕЧАНИЕ. Доступ к таблице Watin ОЧЕНЬ медленный.
Table table = browser.Table("ctl00_defaultContent_ctrlHeader__ctrlHeader_p_Provider3");
if (table == null)
{
DebugLog("Could not find table");
throw new Exception("Results table missing.");
}
TableRow tr = table.TableRows[3];
while( tr != null)
{
string words = tr.TableCells[1].Text;
tr = (TableRow)tr.NextSibling;
}
Вам нужно искать элемент один за другим:
Table table = browser.Table(Find.ById("ctl00_defaultContent_ctrlHeader__ctrlHeader_p_Provider3"));
for (int i = 0; i < table.TableBodies[bodyIndex].TableRows.Count; i++)
{
if (table.TableBodies[0].OwnTableRows[i].TableCells[headerNameColumn].Text == "Provider id...")
{
// do something
}
}