Automatisierung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von noob98.

    Automatisierung

    Hallo zusammen :)
    Bevor ich jetzt für jedes meiner Anliegen ein eigenen Thread aufmache, packe ich mal alles hier zusammen, da es alles ein und das selbe Projekt betrifft.
    Kurze Zusammenfassung:
    Ich arbeite zur Zeit an einem Programm, welches einen automatischen Klick Out bei Idealo vornehmen soll.
    Ablauf des Programms: -> Idealo.de wird aufgerufen -> wenn seite geladen: klick auf ein Produkt->wenn Seite geladen ist soll auf ZUM SHOP geklickt werden.

    Natürlich hat IDealo jetzt kein 0-8-15 Source sondern wieder ein bisschen anspruchsvoller. Das alles habe ich mit dem Webbrowser Control realisieren wollen (Alternativ auch mit GeckoFx), since da verschiedene Trackingparameter mit übergeben werden sollen.

    Nun schonmal zu meiner ersten Frage:

    Ich habe viel mit der DocumentCompleted Funktion des Webbrowser gearbeitet und mit For Each Schleifen um ein bestimmtes Element zu treffen.
    Allerdings wollte ich dir For Each Schleife nach dem Ersten Fund beenden, jedoch arbeitet er auch nach der Exit For Angabe weiter sodass er willkürlich immer wieder auf irgendein Produkt klickt...
    Eine Timer Funktion finde ich irgendwie nur eine hilfsmäßige Rettung der ganzen Sache... daher meine Frage, ob es da eine andere Methodik gibt um nach dem ersten Fund des Elementes nicht weiter zu suchen sondern das dann einfach genommen und nicht wiederholt wird.
    Denn der Code wird ja bei jedem Documentcompleted ausgewählt und ein richtiges Workaround habe ich nicht finden können, denn auch die If Documenttext.contains Abfragen sind nicht 100% zuverlässig.


    Und Anliegen Nummer 2:

    Wenn ich jetzt auf der Produktseite bin, und unten die ganzen Anbieter stehen mit dem Zum Shop Button ist der Source so aufgebaut:

    HTML-Quellcode

    1. <a target="_blank"
    2. data-checkout="false"
    3. data-gtm-event='transaction.leadout'
    4. data-gtm-payload='{"event_action": "button.leadout ", "event_label": "gallery", "event_category": "transaction",
    5. "product_id": "6019587",
    6. "product_name": "Kylie Minogue - Golden (CD)",
    7. "product_price": "4.0",
    8. "product_category": "9891",
    9. "currency": "EUR",
    10. "shop_name": "Amazon Marketplace",
    11. "delivery_time": "SHORT",
    12. "shop_rating": "100",
    13. "position": "-1",
    14. "free_return": "0"}'
    15. href="/preisvergleich/Relocate/3353820510749200398.html?categoryId=9891&amp;price=4.00&amp;productid=6019587&amp;sid=12041&amp;type=offer&amp;pos=-2" class="button button--leadout expanded" rel="nofollow">Zum Shop</a>


    Nach einigem rumprobieren wie ich das jetzt anklicken kann ist das jetz mein letzter Stand:

    VB.NET-Quellcode

    1. If WebBrowser1.DocumentText.Contains("Zum Shop") Then
    2. Try
    3. Dim theElementCollection As HtmlElementCollection
    4. theElementCollection = WebBrowser1.Document.GetElementsByTagName("a")
    5. For Each curElement As HtmlElement In theElementCollection
    6. If curElement.GetAttribute("data-gtm-event").Contains("transaction.leadout") Then
    7. curElement.RaiseEvent("click")
    8. End If
    9. Exit For
    10. Next
    11. Catch exc As Exception
    12. MsgBox(exc.Message)
    13. End Try
    14. End If


    Ein Invokemember hat auch nicht funktioniert...

    Habt ihr da eventuell einen Tipp für mich?

    Beste Grüße
    HP
    Kannst du sagen warum das ganze?
    Also warum musst du so umständlich da auf ein Produkt klicken? Und dann auf einen Shop?

    Sollte es da um irgendwelche Sachen gehen damit man irgendwelche Provisionen bekommt oder so kannst du sicher sein das es in null komma nix gebannt ist.
    Und die Seite auch ständig ihren Code ändert damit solche Bots eben nicht sowas machen können.

    Erklär mal warum das ganze so sein muss evtl. gibt es genau dafür eine Schnittstelle von Idealo selbst.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen