如何从html元素中获取索引值?

时间:2014-07-30 11:57:39

标签: c# watin

我有一个示例html:

<div class="linkWrap">
    <a href="http://google.com">Google</a>
    <a href="http://stackoverflow.com">Stackoverflow</a>
    <a href="http://wikipedia.org">Wikipedia</a>
</div>

我想得到html元素的索引值。

如何获取html元素的索引值?比如jQuery的.index()

public int GetLinkIndex(string url)
{
    // return browser.Link(Find.ByUrl(url)).Index()
}

感谢阅读。


我试过了。但看起来有点不对..

public int GetLinkIndex(string url)
{
    if(browser.Link(Find.ByUrl(url)).Exists)
    {
        int i = 0;
        while(true)
        {
            string href = browser.Link(Find.BySelector(".linkWrap > a") && Find.ByIndex(i)).GetAttributeValue("href");
            if(href == url)
            {
                return i;
            }
            i += 1;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

是针对所有元素还是仅针对特定元素类型。正如您在示例代码中提到的,它似乎适用于Links。然后以下代码可以帮助您

public Int GetListIndex(string url)
{
   LinkCollection links = browser.Links;
   int count = -1;
   foreach(Link lnk in links)
   {
      if(lnk.GetAttributeValue("href").Contains(url))
      {
         return ++count;
      }
     count++;
    }
 }

答案 1 :(得分:0)

您可以尝试使用此Stream阅读器功能在String-Array中保护您的html文件 msdn.microsoft.com/de-de/library/aa287535(V = vs.71)的.aspx

可以删除第一行和最后一行,包含“”和“”

接下来,您可以使用trim Funktion删除每行中的前8个和后4个字符。 msdn.microsoft.com/de-de/library/d4tt83f9(V = vs.110)的.aspx

现在你有一个像“http://google.com”&gt; Google“这样的数组。 您可以使用split-funktion从名称中拆分http部分 msdn.microsoft.com/de-de/library/b873y76a(V = vs.110)的.aspx

将两个部分存储在二维数组中。 现在你有一个索引的URL数组