2016-12-18 1 views
0

ボタンを押したときに名前と色を使ってアイテムを見つけようとしています。 商品の色と名前の2つのテキストボックスが必要です。 この例では、名前は「Flight Suit」で、色は「Woodland Camo」です。 ウェブサイトには、同じ名前と色の商品が1つ以上ある場合があります。C#キーワードがhtmlで一致する場合は、リンクをクリックしてください。

名前が正確でない場合、アイテムが見つかるようにしたいと思います。名前は「フライトスーツ」テキストボックスは「飛行」

<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>

が含まれている場合、それは名前を微すべきであるのであれば、私はすでにこれを試してみました:

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

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


} 

をこの同じコードが使用され色とアイテム名。この問題は、カテゴリに同じ名前と色のアイテムが2つ以上ある場合にクラッシュすることです。別のテキストボックスを除いて同じコードを使用しているため、同時にそれらを適切にチェックすることもできません。

+0

なぜあなたは質問にC#タグを付けましたか? – geo

+0

私はC#でウェブブラウザで製品を見つけ出すソフトウェアを作っています。 – Andre

+0

この質問はC#の質問ではないようです。説明している機能を達成しようとしたC#コード。それを共有していただけますか? – geo

答えて

0

あなたが現在持っているコードに基づいて最も簡単に、私は休憩を追加します。ループのためにあなたを停止し、二つの値を確認するためにあなたの状態を変更する声明:

HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("a"); 
foreach (HtmlElement link in links) 
{ 
    var linkText = link.InnerText; 
    if (linkText.Contains(Keyword.Text) || 
     linkText.Contains(ColorTextbox.Text)) 
    { 
     link.InvokeMember("Click"); 
     break; 
    } 
} 

あなたの色のテキストボックスがそのように私はあなたのためにそれを発明命名されましたか用意されていませんでした。あなたのコードがクラッシュした理由は、一度がwebbrowserコンポーネントのリンクをクリックすると、ページがリロードされているため、コレクション内のHtmlElementsが有効でなくなったためです。

関連する問題