Quellcode und Links aus dem Chrome Browser auslesen

  • Dachte ich mir ;)

    Rechte Maustaste auf das Feld, "Untersuchen" oder "Inspizieren", rechts erscheint ein markierter Text, rechte Maustaste auf den Text, Kopieren, "XPath kopieren" oder "Ganzen XPath kopieren". Der erste reicht meistens.

    Manchmal, je nach Seite, muss man rechts oben links noch mal auf das Kästchen mit dem Pfeil klicken und dann mit der Maus dahin zeigen, wo man den XPath sucht.

    :)

    Einmal editiert, zuletzt von HansJ54 (16. Juni 2020 um 00:13)

  • Hallo...

    Chrome ärgert mich... ;)
    Obwohl ich in den Chrome Einstellungen fest eingestellt habe, dass Benachrichtigungen Blockieren soll speichert er diese Einstellung nicht wenn ich mein Autoit-Programm neu starte und Chrome wieder geöffnet wird... dann kommt wieder die Meldung "Benachrichtigungen anzeigen Zulassen Blockieren" kann man das dauerhaft abstellen?

    Ansonsten scheint es mir bis jetzt doch recht einfach zu sein... ;):)

    Ach und fast vergessen.... wie kann man eine Seite in einem Neuen Tab öffnen? Also keinen neuen Browser sondern nur einen neuen Tab....

    Gruß

  • Evtl solltest du dir einmal deine Themen der letzten vier Jahre anschauen. Da hast mehrmals exakt das gleiche Thema gefragt. Sprich wie den Quellcode einer Webseite auslesen kannst.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Evtl solltest du dir einmal deine Themen der letzten vier Jahre anschauen. Da hast mehrmals exakt das gleiche Thema gefragt. Sprich wie den Quellcode einer Webseite auslesen kannst.

    ich suche aber nicht den Quellcode sondern die Adresszeile und in den Vergangenen Jahren habe ich es nicht versucht mit dem ChromeDriver zu machen....

    Den Quellcode habe ich...

  • Obwohl ich in den Chrome Einstellungen fest eingestellt habe, dass Benachrichtigungen Blockieren soll speichert er diese Einstellung nicht wenn ich mein Autoit-Programm neu starte und Chrome wieder geöffnet wird... dann kommt wieder die Meldung "Benachrichtigungen anzeigen Zulassen Blockieren" kann man das dauerhaft abstellen?

    Wenn immer ein neues temporäres Profil genutzt wird, dann kann sich Chrome natürlich nichts merken. Das lässt sich dadurch verhindern, dass der Browser immer das gleiche vorgegebene Profil nimmt. Das erreicht man durch "$sChromeProfil" (Pfad zur Ablage des Profils z.B. c:\webdriver). Macht zwar auch wieder neue Baustellen auf, wenn Browserfenster offen bleiben und Du Dein Programm neu startest, aber hilft ansonsten. Falls das vorkommt, einfach alle Fenster schließen bevor Du neu startest oder mehrere solcher Profile vorsehen.

    Ansonsten scheint es mir bis jetzt doch recht einfach zu sein... ;):)

    Bis jetzt ja, aber es bleiben, wenn Du tiefer einsteigst, immer noch Probleme. Wie bekommt man z.B. das "Chrome wird von automatisierter Testsoftware gesteuert" weg? Niemand hat einen Tipp bisher. Wobei das doch eigentlich mit "normalen Bordmitteln" von AutoIt möglich sein müsste ohne die Webdriver-UDF. Ist ja "nur ein Klick" auf das X ;(

    Ach und fast vergessen.... wie kann man eine Seite in einem Neuen Tab öffnen? Also keinen neuen Browser sondern nur einen neuen Tab....

    Dazu gibt es den Befehl WD_NewTab, findest Du in WD_Helper.

    Spoiler anzeigen

    ; #FUNCTION# ====================================================================================================================

    ; Name ..........: _WD_NewTab

    ; Description ...: Helper function to create new tab using Javascript

    ; Syntax ........: _WD_NewTab($sSession[, $lSwitch = Default[, $iTimeout = Default[, $sURL = Default[, $sFeatures = Default]]]])

    ; Parameters ....: $sSession - Session ID from _WDCreateSession

    ; $lSwitch - [optional] Switch session context to new tab? Default is True.

    ; $iTimeout - [optional] Period of time to wait before exiting function

    ; $sURL - [optional] URL to be loaded in new tab

    ; $sFeatures - [optional] Comma-separated list of requested features of the new tab

    Evtl solltest du dir einmal deine Themen der letzten vier Jahre anschauen. Da hast mehrmals exakt das gleiche Thema gefragt. Sprich wie den Quellcode einer Webseite auslesen kannst.

    Vielleicht ist es gar nicht schlecht, das Thema Webdriver UDF mal von "Fast-Anfänger" zu "Anfänger" zu vermitteln. Die WD_Demo von Dan ist zwar super, aber nichts für jemanden, der sich völlig neu in das Gebiet einarbeitet, sondern setzt schon einiges an Wissen und Intuition voraus - war zumindest bei mir so. Und es hat viel Zeit und Fragen gekostet, um auch nur die wichtigsten Hintergründe zu verstehen und damit umzugehen.

  • Hallo,

    Ich habe es jetzt mal so abgeändert um die Speicherort einzutragen, leider zeigt er mir einen Fehler in der Zeile an....

    "_FuncName($sFuncName, @ScriptLineNumber)"

    Was könnte dafür der Grund sein? mich wundert auch, dass die Variable "$sChromeProfil" nirgens gefüllt wird.... ist das so richtig? :/

    Gruß

  • "_FuncName($sFuncName, @ScriptLineNumber)" ist eine eigene Debug-Funktion, habe ich vergessen zu löschen - einfach weg damit.

    $sChromeProfil und $sWebDriverFileChrome musst Du selbst setzen:

    z.B.

    $sChromeProfil = "C:/Webdriver/CHROME_WD_Profile"

    $sWebDriverFileChrome = @ScriptDir & "chromedriver.exe"

    Zeile 3+4 gehören nicht in ChromeSetup, das solltest Du an den Anfang Deines Programms setzen.

    :)

  • Oder so z.B.:

    Code
    Local Const $sChromeProfil = 'C:/Webdriver/CHROME_WD_Profile'
    Local Const $sWebDriverFileChrome = 'C:/Webdriver/chromedriver.exe'

    Du musst darauf achten, dass im Gegensatz zu den Windowskonventionen hier in den Pfaden der "\" durch einen "/" ersetzt wird.

    :)

  • Hallo...

    Ich habe es hin bekommen und funktioniert super... Vielen Dank :)

    Code
    Local Const $sChromeProfil = 'C:/Webdriver/CHROME_WD_Profile'
    Local Const $sWebDriverFileChrome = 'C:/Webdriver/chromedriver.exe'

    Was bringt die Deklaration in diesem Beispiel für einen Vorteil? Und was bedeutet der Zusatz "Const"? Kann man den Wert nicht mehr ändern in der Variable?

    Gruß

  • Ich habe es inzwischen auch geschaft, einen neuen Tab zu öffnen.... und eine zweite Seite zu laden... Wie kann ich denn nun zwischen den Seiten wechseln, damit ich mal auf Tab 1 oder Tab 2 arbeiten kann?

    Mein Code sieht so aus...

    Worin liegt mein Fehler und was müsste ich korrigieren/ergänzen?

    Gruß

  • Mit _WD_Window und der "switch" Action wechselt man zwischen Tabs.

  • Wie wäre es mit Angabe einer URL in NewTab?

    _WD_NewTab($sSession, True, -1, $sURL)

    Und bei Switch musst Du Dir vorher ein Hendl kaufen:S

    $sHandle = _WD_Window($sSessions, "window")

    Damit kannst Du das Fenster dann wieder reaktivieren.

    :)

  • Ich habe jetzt sicher fast alle Varianten ausprobiert, leider war nicht die richtige Variante dabei....

    ich weiß nicht, was ich mit dem gekauften Handle machen soll, noch was er bewirken soll....

    wie sage ich dem Switch, zu welchem Tab er Switchen soll?

  • _WD_NewTab gibt als Returnwert das Handle des neuen Tabs zurück. Das übergibst Du dann an _WD_Window.

    Noch einfacher: Setze bei _WD_NewTab den zweiten Parameter ($lSwitch) auf True, dann switcht die UDF automatisch zu diesem neuen Tab.

  • ha... ok... jetzt weiß ich, warum es nicht funktionier hat.... ich wollte nämlich zu "_WD_Navigate($sSession,$sUrl)" zurück kehren.

    "_WD_NewTab" war ja bereits aktiv und konnte nicht noch mehr aktiv werden.... :D Das habe ich nun aber auch hin bekommen.... :thumbup::)

    2 Mal editiert, zuletzt von Faultier_1982 (19. Juni 2020 um 22:26)

  • Mit

    Code
    Local $aHandles = _WD_Window($sSession, 'handles')

    erhältst Du die Liste der Handles aller Windows.
    Schau Dir mal den Code von _WD_NewTab an. Da siehst Du, wie das funktioniert.

  • Das Wiki verlinkt auf einen Thread mit Beispielen. Siehe dort.

    Oder WD_Demo das mit der UDF mitkommt.