0

我在这个网站上使用WatiN : http ://www.mcmaster.com/#socket-head-cap-screws/=k5c5q8 我试图通过单击每个 h3 标签的类名来循环浏览每个页面。页面上没有href,我相信当点击h3时页面使用javascript加载下一页。

到目前为止,这是我的代码:

         types = doc.DocumentNode.SelectNodes("//h3[@class='AbbrPrsnttn_PrsnttnNm']");
         foreach (HtmlNode type in types)
               {

                desc = type.InnerText.CleanText();

                browser.div(Find.ById("ProdPrsnttnGrpCntnr")).Element(Find.ByClass("AbbrPrsnttn_PrsnttnNm")).Click();                        
                System.Threading.Thread.Sleep(5000);
                types = doc.DocumentNode.SelectNodes("//h3[@class='AbbrPrsnttn_PrsnttnNm']");
                doc2.LoadHtml(browser.Html);
                partTable = doc2.DocumentNode.SelectSingleNode("//div[@class='ItmTblGrp']");

                MineNext(doc, doc2, browser, typeUrl, types, desc, partTable);

                }

最重要的线是

browser.div(Find.ById("ProdPrsnttnGrpCntnr")).Element(Find.ByClass("AbbrPrsnttn_PrsnttnNm")).Click();

当我运行此代码时,它会单击“Abb​​rPrsnttn_PrsnttnNm”的第一类,但是一旦我迭代回到此页面,它就会尝试再次加载名称为“Black-Oxide Alloy Steel”的相同元素。它会一遍又一遍地加载它,因为它不知道如何区分具有相同类名的其他 H3。有没有办法收集这些元素,然后在集合中运行一个foreach 循环并使用WatiN单独单击每个元素?

4

1 回答 1

1

谢谢大家没有回答这个问题,因为它让我自己弄清楚。给了我我在工作中感受到的最大感觉。

                   var h3s = browser.Div(Find.ById("ProdPrsnttnGrpCntnr")).ElementsWithTag("h3").ToArray();
                    for (int i = 1; i < h3s.Count(); i++)
                    {
                        h3s[i].Click();
                        System.Threading.Thread.Sleep(5000);
                        types = doc.DocumentNode.SelectNodes("//h3[@class='AbbrPrsnttn_PrsnttnNm']");
                        doc2.LoadHtml(browser.Html);
                        partTable = doc2.DocumentNode.SelectSingleNode("//div[@class='ItmTblGrp']");

                        MineNext(doc, doc2, browser, typeUrl, types, desc, partTable);
                        h3s = browser.Div(Find.ById("ProdPrsnttnGrpCntnr")).ElementsWithTag("h3").ToArray();
                    }
于 2012-11-14T16:18:10.040 回答