Beiträge von Faultier_1982
-
-
Hallo,
Es gibt noch keinen Code, da ich noch nicht weiß ob ich an die Daten überhaupt ran komme. Ich habe mir bisher im Google-Chrome Browser nur die Internetseite und den Quellcode angesehen und festgestellt, dass ich die benötigten Informationen nicht markieren kann und auch im Quellcode nicht enthalten sind. Je nachdem auf welche Weise ich an die Werte ran komme muss ich mir dann überlegen, wie mein Code aussieht. Das Ziel ist auf jeden Fall die Kurs-Daten auszulesen und dann entweder direkt in Excel zu speichern oder in eine Datenbank, das werde ich dann sehen, wie viele es sind.
Das ist das Chartbild, deren Werte ich benötige. das beste wäre natürlich, wenn ich alles auf einmal auslesen könnte, vielleicht kann ich auch nur jeden Tag einzeln mit den roten Zahlen im oberen bereich auslesen.
ich verwende keine ad-Blocker....
Bis jetzt habe ich im Chrome-Browser das Entwicklertool geöffnet und unter Netzwerk die "Aufzeichnung des Netzwerkprotokolls aktiviert". Die Seite nochmals neu geladen und dann im Bereich "Name" die Links der aufgelisteten Positionen in einem anderen Tab öffnen lassen. In diesem Inhalt habe ich dann nach den Werten, die ich benötige, gesucht und leider nicht gefunden.
Gruß
-
Hallo,
ich würde gerne auf dieser Seite "https://www.forex.com/ie/markets-to-trade/indices-trading/wall-street/" die werte aus dem Chartbild auslesen, leider sind die Werte im Quellcode nicht enthalten da sie vermutlich mit Javascript nachgeladen werden. ich habe versucht die URL im "Entwicklertool/Netzwerk" herauszufinden, die die Werte enthält, habe ich aber nicht gefunden. Ich vermute, dass das irgendwie anders funktioniert. Gibt es dafür eine Möglichkeit? Zur nur auch nur die Werte, die einem im oben Chart dynamisch angezeigt werden ja nachdem wo man mit der Maus gerade ist.
Gruß
-
Wenn Du gemäß Anleitung nach den Webdrivern suchst, findest Du die richtigen: z.B. Geckodriver
Und wenn Du dann das hier gefunden hast, liegst Du richtig:
Ja... dann habe ich da bis jetzt alles richtig gemacht vielen Dank...
Was das Piepen angeht.... Ich habe mal ein Beispiel-Code erstellt, in dem bei mir das Piepen vorkommt.... Vielleicht erkennt jemand das Problem
Wenn ich diese Zeile deaktivieren ist das Piepen zwar weg aber für meinen Code natürlich schlecht....
C
Alles anzeigen#include "wd_core.au3" #include "wd_helper.au3" #include <MsgBoxConstants.au3> $_WD_DEBUG = False ; Webdriver Debug-Fenster Local $sDesiredCapabilities, $sSession, $sSource SetupGecko() ;_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.youtube.com" ; Url _WD_Navigate($sSession,$sUrl) ; Navigate to the designated URL ;#################################### Dim $geladen_Suchbrgriff = "Mediathek" Call ("Warte_bis_Seite_geladen") ;#################################### _WD_DeleteSession($sSession) ; Session schließen _WD_Shutdown() ; ChromeDriver beenden Func Warte_bis_Seite_geladen() Local $Zeidauer = TimerInit() Local $Seite_gefunden = 0 While True ;Endlosschleife $sSource = _WD_GetSource($sSession) ;liest den Quell-Code der Seite aus MsgBox(0,"Info", "Hier entsteht das Piepen glaube ich ""$sSource = _WD_GetSource($sSession)"" entferne ich das aus dem Code, ist das Piepen weg. aber warum??? ") If StringInStr($sSource, $geladen_Suchbrgriff) <> 0 Then $Seite_gefunden = 1 ExitLoop EndIf If TimerDiff($Zeidauer) >= 30 * 1000 or $Seite_gefunden = 1 Then ExitLoop WEnd EndFunc
Gruß Faultier
-
Für den IE benutzt du am besten die IE.au3
Ich den Internetexplorer nutze ich eigentlich nicht so oft und wollte generell einfach mal ausprobieren wie das mit ControlClick funktioniert, um es allgemein anwenden zu können...
-
Hallo...
Ich würde mich mal gerne mit dem Befehl "ControlClick" befassen, vielleicht finde ich mal einen Einsatzbereich dafür.... Muss eigentlich das Fenster Aktiv im Vordergrund sein, dass der Befehl funktioniert? Ich habe mit Autoit Windor Info mal was zum klicken gesucht, weiß aber nicht, wo ich welche Werte genau eingeben muss.... Habe schon einiges versucht aber nichts hat bis jetzt funktionieren wollen.
CodeControlClick ( "Deutsche Wirtschafts Nachrichten - deutsche-wirtschafts-nachrichten.de - Internet Explorer", "", "[CLASS:DirectUIHWND; INSTANCE:3]", "left" , 1 , 104 , 12 )
Hier die Infos aus Autoit Windows Info
Code
Alles anzeigen>>>> Window <<<< Title: Deutsche Wirtschafts Nachrichten - deutsche-wirtschafts-nachrichten.de - Internet Explorer Class: IEFrame Position: -8, -8 Size: 1936, 1056 Style: 0x17CF0000 ExStyle: 0x00000100 Handle: 0x000000000001026C >>>> Control <<<< Class: DirectUIHWND Instance: 3 ClassnameNN: DirectUIHWND3 Name: Advanced (Class): [CLASS:DirectUIHWND; INSTANCE:3] ID: Text: Position: 0, 61 Size: 1920, 23 ControlClick Coords: 104, 12 Style: 0x56000000 ExStyle: 0x00000000 Handle: 0x00000000000102AE >>>> Mouse <<<< Position: 104, 65 Cursor ID: 0 Color: 0xFFFFFF >>>> StatusBar <<<< 1: 2: >>>> ToolsBar <<<< >>>> Visible Text <<<< Navigationsleiste Adressleiste https://deutsche-wirtschafts-nachrichten.de/ Kombinationssteuerelement "Adresse" Seitensteuerung Suchleiste Kombinationssteuerelement "Adresse" Favoriten und Symbolleiste ITBarHost Menüleiste Deutsche Wirtschafts Nachrichten - deutsche-wirtschafts-nachrichten.de - Internet Explorer Vergrößerungsstufe >>>> Hidden Text <<<< Seitensteuerung ITBarHost Menüleiste Control ID eines Buttons auslesen [Minecraft] - Hilfe & Unterstützung - AutoIt.de - Das deutsch - Internet Explorer Vergrößerungsstufe ITBarHost Menüleiste AutoIt Window Info Tool - Internet Explorer Vergrößerungsstufe ITBarHost Menüleiste Home | Börse Stuttgart - Internet Explorer Vergrößerungsstufe ITBarHost Menüleiste WEB.DE - E-Mail-Adresse kostenlos, FreeMail, De-Mail & Nachrichten - Internet Explorer Vergrößerungsstufe ITBarHost Menüleiste Leere Seite - Internet Explorer Vergrößerungsstufe
Gruß Faultier
-
Also anstatt die Mühe zu investieren, einen Watchdog zu programmieren würde ich lieber einfach das eigentliche Programm überarbeiten und Fehlerfälle abfangen, dann haste diese Sorgen auch nicht mehr.
Mir kommts so vor als ob du dein 1. Skript ziemlich schlampig programmiert hast. Wenn du uns es zeigst können wir es uns ja mal ansehen und mit ein paar Hinweisen, wo es sich aufhängt dir helfen?
Bis jetzt hat sich mein Programm noch nicht aufgehängt.... aber ich wollte einfach für die den Fall der Fälle gewappnet sein, weil das Programm schlussendlich auf einem Home-Server laufen soll, das ich nicht immer im Blick haben kann/will.... reine Vorsichtsmaßnahme..... Zusätzlich wollte ich meinen Server auf einmal am Tag neu starten lassen und hoffe so, dass alles so stabil wie möglich funktioniert.... Ist mein Denkansatz falsch?
-
Vielen Dank für eure Vorschläge. Eigentlich möchte ich eine Autoit-EXE dauerhaft laufen lassen. Aber weil es immer mal wieder vorkommen kann, dass ein Programm sich aufhängt oder sich nach einem Fehler selber schließt, würde ich gerne regelmäßig prüfen, ob das Programm noch läuft, und wenn es nicht läuft neu starten. Zusätzlich möchte ich das Programm nach einer gewissen Zeit einfach schließen und frisch starten, weil glaube/hoffe, dass so die Chance größer ist, dass das Programm dauerhaft zuverlässig läuft. Ob das alles auch so funktioniert wich ich es mit erhoffe weiß ich natürlich noch nicht....
-
Hallo...
Ich habe mit Autoit ein kleines Programm geschrieben und als .exe formatiert. Dieses Programm läuft auch wunderbar.
Nun würde ich gerne ein zweites Autoit-Programm schreiben, mit dem ich prüfen kann, ob das erste Programm läuft und falls es läuft auch beenden kann.
Ich habe mal versucht es mit "WinList()" überhaupt zu finden, aber leider wird es nicht eindeutig erkennbar und identifizierbar, wenn es damit überhaupt zu finden ist.
Was hättet ihr mir für Vorschläge das umzusetzen?
Gruß Faultier
-
Hallo...
kann ich eigentlich alle Dateien, außer die Cromdriver.exe, die ich zu beginn für den Chrome-Browser runter laden musste auch für den Firefox-Browser nutzen oder brauche ich da ein anderes Dateien.
Ich habe die geckodriver.exe Version 71.0.0.7222 ist das die aktuelle? Mein Firefox hat die Version 77.0.1 (64Bit). ich vermute, dass ich nicht die richtige Datei gefunden habe... wo finde ich denn die richtige Datei?
Gruß
-
Hallo...
Wie würden hier denn die Anderungen aussehen, wenn man auch mit Firefox die Einstellungen im Browser speichern will?
CodeFunc SetupGecko() _WD_Option('Driver', 'geckodriver.exe') _WD_Option('Port', 4444) _WD_Option('DriverParams', '--log trace') $sDesiredCapabilities = '{"desiredCapabilities":{"javascriptEnabled":true,"nativeEvents":true,"acceptInsecureCerts":true}}' EndFunc
Und woher kommt das ständige Piepen, während Firefox aufgeführt wird? kann es sein, dass Firefox das macht, wenn man Elemente im Code zum klicken hat, die im Browser nicht verfügbar sind? irgendwie extrem nervig.
Gruß Faultier
-
Hallo...
der "Switch" Befehl geht mir ein bisschen auf die Nerven, weil er nicht nur das Tab im Chrome nach vorne holt, sondern er es komplett nach vorne holt. Wenn ich also gerade im Firefox oder Excel etwas anderes arbeiten will, ploppt mir der "Switch" Befehl immer in meine Arbeit, indem er das Chrome nach vorne auf den Desktop holt... gibt es da noch eine Möglichkeit um das zu verhindern??
so habe ich es versucht, dass ich den "Switch" Befehl gar nicht verwenden muss, hat aber nicht geklappt.
Code
Alles anzeigenLocal $sSession = _WD_CreateSession($sDesiredCapabilities) ; Request new session from web driver Local $Tab_ID_1 = _WD_Window($sSession, "window") ;ID des Tabs zur Navigation ;weiterer Code Local $Tab_ID_2 = _WD_NewTab($sSession, True, -1) ;, 'width=1000,height=1000') ;weiterer Code Local $sUrl = "https://www.Google.de.com" ; Url _WD_Navigate($Tab_ID_1,$sUrl) ; Navigate to the designated URL
Hatte gehofft, so nicht Switchen zu müssen und das entsprechende Tab direkt ansteuern zu können, ohne ihn in den Vordergrund holen zu müssen
Wenn ich das mit Firefox mal versuchen will, was benötige ich dafür und wo finde ich das? Soll ich dann dafür ein neues Thema auf machen oder bekomme ich dann wieder den Hinweis, dass ich meine Themen der letzten Jahre anschauen soll?
Gruß
-
Die Browser sehen anders aus aufgrund der Parameter, die Du mit Desiredcapabilities übergibst. Dazu müsstest Du mal tiefer beim Chromedriver einsteigen.
ok.... ich möchte es einfach identisch zum normalen Chrome haben... Das sollte doch eigentlich der Standard sein...
-
wd_loadwait scheint tatsächlich manchmal nicht auszureichen. Da gebe ich dann noch ein Sleep(3000) dazu. Ausprobieren!
Ich habe eine Funktion geschrieben, die in einer Schleife auf ein bestimmten String im Quell-Code wartet, bevor es weiter geht.... läuft wesentlich zuverlässiger...
Code
Alles anzeigenFunc Warte_bis_Seite_geladen() Local $Zeidauer = TimerInit() Local $Seite_gefunden = 0 While True ;Endlosschleife $sSource = _WD_GetSource($sSession) ;liest den Quell-Code der Seite aus If StringInStr($sSource, $Anmelde_Suchbrgriff) <> 0 or StringInStr($sSource, $geladen_Suchbrgriff) <> 0 Then $Seite_gefunden = 1 ExitLoop EndIf If TimerDiff($Zeidauer) >= 30 * 1000 or $Seite_gefunden = 1 Then ExitLoop WEnd EndFunc
ich habe das Gefühl, dass Chrome, die Automatisierungssoftware verwendet, etwas anders ist als der normale Chrome-Browser... zumindest sind die Einstellungen nicht identisch und auch die Seiten sind teilweise geringfügig unterschiedlich.... Warum ist das so und wie kann man diese automatisierungs-Variante abschalten?
Gruß
-
TimerDiff gibt den Wert in Millisekunden zurück.
Wenn Du den Wert durch 1000 dividierst, erhältst Du Sekunden.
Wie willst Du dann ein Ergebnis von 0,008 erhalten?
na 0,008 Sekunden gehe ich mal davon aus. Ich hatte ja das Gefühl, dass "_WD_Loadwait($sSession)" nicht funktioniert.... Die 0,008 Sekunden würden das bestätigen...
Die Frage ist, warum funktioniert sie nicht und habt Ihr die gleiche Erfahrung gemacht?
-
ist es also zu betrachten wie in der Mathematik Punkt vor Strich Klammer zuerst? In diesem Fall And vor Or Klammer zuerst?
-
Schau mal in die WD_Demo.au3 rein. Da wird Chrome genau so beendet:
ja... ich habe es gesehen... hatte gehofft, dass es eine bessere Lösung gibt....
Schreib mal vor und nach WD_Loadwait die Zeit auf die Konsole. So sieht man, wie lange die Funktion wartet.
So? oder gibt es da eine schönere Lösung?
CodeLocal $sUrl = "https://www.Google.com" ; Url _WD_Navigate($sSession,$sUrl) ; Navigate to the designated URL Local $hTimer = TimerInit() _WD_Loadwait($sSession) MsgBox(0, "", Round(TimerDiff($hTimer)/ 1000,3))
mit diesem versuch, wartet er 0,008 Sekunden also praktisch nicht.... aber ich habe es auch mal nur mit "_WD_Loadwait($sSession)" versucht, und das Internet ausgeschalten, es konnte also nicht fertig laden, und der Code lief einfach durch....
Mein Problem ist nämlich, dass ich nach etwas auf der Seite suche, das noch nicht geladen ist, obwohl ich "_WD_Loadwait($sSession)" verwende.... er wartet auf jeden fall nicht, bis alles geladen ist.
Gruß
-
Das ist die korrekte Vorgangsweise - zumindest in meinem FF Skript funktioniert das perfekt.
ok.... Chrome mag das offensichtlich nicht so...
P.S. Wenn man Dir bei einem Problem helfen soll, dann musst Du möglichst vollständige Informationen zur Verfügung stellen. "Geht nicht" oder "Es kommt eine Fehlermeldung" genügt nicht.
ich bemühe mich....
Und warum funktioniert eigentlich das "_WD_Loadwait($sSession)" nicht?
CodeLocal $sUrl = "https://www.Google.com" ; Url _WD_Navigate($sSession,$sUrl) _WD_Loadwait($sSession) $sSource = _WD_GetSource($sSession)
der Code läuft immer weiter, obwohl die Seite noch nicht geladen ist. Deshalb ist im "$sSource" am Ende der falsche oder zumindest nicht der Vollständige Quell-Code...
Gibt es in einem Quell-Code einen Bereich/Zeichenfolge, die auf allen Seiten gleich ist und zum Schluss geladen wir, nach der man suchen kann, ob die Seite fertig geladen ist.
Gruß
-
Das bedeutet, wenn ich das "Or" nicht mit Klammern von einander trenne, kann ich es auch gleich weg lassen und habe das gleiche Ergebnis?
-
ok....
Ich sehe jetzt den Fehler, verstehe ich aber noch nicht.... Was ändert sich dann an dem Oder durch die Klammern? Oder bedeutet doch, dass entweder das eine ODER das andere True sein muss um um die MsgBox zu starten.... Ohne klammer verhält sich das Or doch wie ein And??? wofür brauch ich das Or dann?