Я написал метод, чтобы сделать это некоторое время назад, потому что (насколько я знаю), нет ничего встроенного в WatiN.С тех пор у меня не было никаких проблем с этим кодом, но я все еще считаю его ужасным взломом!Может быть, один из самых умных плакатов поможет улучшить его!HTH!
Фил
private void button1_Click(object sender, EventArgs e)
{
using (IE browser = new IE("www.google.co.uk"))
{
Div div = browser.Div("hplogo");
Dictionary<string, string> attrs = GetAllAttributeValues(div);
}
}
private Dictionary<string, string> GetAllAttributeValues(Element element)
{
if (element == null)
throw new ArgumentNullException("Supplied element is null");
if (!element.Exists)
throw new ArgumentException("Supplied element does not exist");
string html = element.OuterHtml; // element html (incl children)
int idx = html.IndexOf(">");
Debug.Assert(idx != -1);
html = html.Substring(0, idx + 1).Trim(); // element html without children
Dictionary<string, string> result = new Dictionary<string, string>();
while ((idx = html.IndexOf('=')) != -1)
{
int spaceIdx = idx - 1;
while (spaceIdx >= 0 && html[spaceIdx] != ' ')
spaceIdx--;
Debug.Assert(spaceIdx != -1);
string attrName = html.Substring(spaceIdx + 1, idx - spaceIdx - 1);
string attrValue = element.GetAttributeValue(attrName);
result.Add(attrName, attrValue);
html = html.Remove(0, idx + 1);
}
return result;
}