C#如果关键字在html中匹配,请单击链接

时间:2016-12-18 14:46:49

标签: c#

按下按钮时,我尝试使用名称和颜色制作找到项目的内容。 我希望有2个文本框,其中包含产品的颜色和名称。 在示例中,名称是" Flight Suit"而且颜色是" Woodland Camo"。 该网站可能有多个名称和颜色相同的产品。

如果名称不准确,我也希望找到该项目。所以,如果名字是" Flight Suit"当文本框包含" flight"

时,它应该是正确的名称



<article>
<div class="inner-article">
<a href="/shop/pants/hfr1oni4u/pty423v8i" style="height:150px;">
<img alt="54m1hrdynn4" height="150" src="//d17ol771963kd3.cloudfront.net/120999/vi/54M1hRDYnN4.jpg" width="150">
</a>
<h1>
<a href="/shop/pants/hfr1oni4u/pty423v8i" class="name-link">Flight Suit</a>
</h1>
<p>
<a href="/shop/pants/hfr1oni4u/pty423v8i" class="name-link">Woodland Camo</a>
</p>
</div>
</article>
&#13;
&#13;
&#13;

我已经尝试过了:

HtmlElementCollection links =  webBrowser1.Document.GetElementsByTagName("a");

foreach (HtmlElement link in links)
{
    if (link.InnerText.Contains(Keyword.Text))
        link.InvokeMember("Click");


}

此相同的代码用于颜色和项目名称。这样做的问题是,如果类别具有多个具有相同名称和颜色的项目,则会崩溃。它也只是不能同时正确检查它们,因为除了不同的文本框之外它们使用相同的代码。

1 个答案:

答案 0 :(得分:0)

根据你现在的代码最简单,我会添加一个休息时间;声明停止for循环并更改条件以检查两个值:

test

您没有提供您的彩色文本框的名称,因此我为您发明了这一点。您的代码崩溃的原因是,一旦您点击 webbrowser组件中的链接,该集合中的HtmlElements就不再有效,因为正在重新加载该页面。