2016-07-10 20 views
0

Ich versuche, auf einen Link innerhalb einer Klasse zu klicken. Es ist nicht möglich, nach einem Tag, einer ID oder ähnlichem zu suchen, da das Programm die Seite aktualisiert, bis ein Ticket verfügbar ist.C# webBrowser bekomme Elemente innerhalb einer Klasse

der HTML-Code sieht wie folgt aus:

<div class="items available"> 
    <div class="item"> 
     <a href="link.com"> 
    </div> 
    //more item classes 
<div class="items sold"> 
    <div class="item"> 
     <a href="link.com"> 
    </div> 
    //more item classes 

ich denke, dass ich den Inhalt in „Veröffentlichungen“ müssen, und danach den Inhalt der Artikel und dort muss ich das ein Element klicken (es gibt nur ein Element). aber wie kann ich das tun?

das ist, was ich denke, dass es tun muss.

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div")) 
{ 
    if (el.GetAttribute("className") == "items available") 
    { 
     foreach (HtmlElement el2 in //get all elements within items available) 
     { 
      if (el2.GetAttribute("className") == "item") 
      //i think it will get the first item class within items available  
      { 
       foreach (HtmlElement el3 in //get all a elements within item) 
       { 
        el3.InvokeMember("click"); 
        break; 
       } 

      } 
     } 
    } 
} 

aber ist das überhaupt möglich? Ich hoffe es!!

Danke !!!

+0

"Tickets verfügbar"? meinst du "Artikel verfügbar"? – derloopkat

+0

oops, ich meine "Artikel verfügbar". Ich werde das ändern haha. Vielen Dank! – Teun

+0

Das Problem ist, wenn Sie versuchen, die divs aus dem Dokument zu bekommen, sind sie noch nicht geladen, weil der Prozess asynchron ist. Mein Rat ist, eine Web-Anfrage in C# zu machen, um die Seite zu erhalten und HtmlAgilityPack zum Extrahieren von Elementen aus HTML zu verwenden. – derloopkat

Antwort

0

Sie können HtmlAgilityPack verwenden, was die empfohlene Methode zum Extrahieren von Elementen aus einer Seite ist.

Installieren Sie HtmlAgilityPack mit Nuget. Unten ist ein Beispiel, das der Ausgangspunkt für Sie sein kann.

HtmlDocument _doc = web.Load(url); 
var myClasses = _doc.DocumentNode.Descendants("div").Where(d => 
    d.Attributes.Contains("items available") 
); 

Dann können Sie Schleife myclasses Sammlung.

+0

Danke! Für mich geht das! – Teun

Verwandte Themen