Quellcode und Links aus dem Chrome Browser auslesen
-
Faultier_1982 -
21. Mai 2020 um 08:09 -
Erledigt
-
-
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.
-
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.
-
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.
AutoIt
Alles anzeigenLocal Const $sChromeProfil = 'C:/Webdriver/CHROME_WD_Profile' Local Const $sWebDriverFileChrome = 'C:/Webdriver/chromedriver.exe' ... Func _SetupChrome() Local $sFuncName = "SetupChrome" _FuncName($sFuncName, @ScriptLineNumber) _WD_Option('Driver', $sWebDriverFileChrome) _WD_Option('Port', 9715) _WD_Option('DriverParams', '--log-path="' & $sLogsPath & 'chrome.log"' & ' --port=9715') $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args":["user-data-dir=' & $sChromeProfil & '"]}}}}' EndFunc
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,
Code
Alles anzeigenFunc _SetupChrome() $target = @ScriptFullPath $sLogsPat = StringLeft($target, StringInStr($target, "\", Default, -1)) Local $sFuncName = "SetupChrome" _FuncName($sFuncName, @ScriptLineNumber) _WD_Option('Driver', $sWebDriverFileChrome) _WD_Option('Port', 9715) _WD_Option('DriverParams', '--log-path="' & $sLogsPath & 'chrome.log"' & ' --port=9715') $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args":["user-data-dir=' & $sChromeProfil & '"]}}}}' EndFunc
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.
-
-
Hallo...
Ich habe es hin bekommen und funktioniert super... Vielen Dank
CodeLocal 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...
Code
Alles anzeigen_SetupChrome() ; Initialisierung ChromeDriver _WD_Startup() ; Launch the designated web driver console app $sSession = _WD_CreateSession($sDesiredCapabilities) ; Request new session from web driver Local $sUrl = 'https://www.google.de' ; Url _WD_Navigate($sSession,$sUrl) ; Navigate to the designated URL _WD_Loadwait($sSession) ; Wait for a browser page load to complete before returning Local $_URL_TAB = _WD_NewTab($sSession, True) ;opens a new tab no problem _WD_Navigate($sSession, "http://www.web.de") ;new tab does not navigate anywhere...?
Worin liegt mein Fehler und was müsste ich korrigieren/ergänzen?
Gruß
-
Mit _WD_Window und der "switch" Action wechselt man zwischen Tabs.
-
Mit _WD_Window und der "switch" Action wechselt man zwischen Tabs.
ok....
und was muss in das $sCurrentTab hinein??
Gruß
-
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
$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?
Code
Alles anzeigen_SetupChrome() ; Initialisierung ChromeDriver _WD_Startup() ; Launch the designated web driver console app Local $sSession = _WD_CreateSession($sDesiredCapabilities) ; Request new session from web driver Local $sUrl = 'https://www.google.de' ; Url _WD_Navigate($sSession,$sUrl) ; Navigate to the designated URL _WD_Loadwait($sSession) ; Wait for a browser page load to complete before returning Local $sURL_2 = "http://www.web.de" _WD_NewTab($sSession, True, -1, $sURL_2) Local $sHandle = _WD_Window($sSession, "window") _WD_Window($sSession, 'Switch', '{"handle":"' & $sHandle & '"}')
-
_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.... Das habe ich nun aber auch hin bekommen....
-
-
Scheint alles zu funktionieren... aber wie kann man die Tabs und zum Schluss auch den kompletten Chrome-Browser wieder schließen??
-
Das Wiki verlinkt auf einen Thread mit Beispielen. Siehe dort.
Oder WD_Demo das mit der UDF mitkommt.
-