1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. MojoeB

Beiträge von MojoeB

  • Community Projekt: Teil 2 - Umgang mit Discord, Git, GitHub, gemeinsamen Tooling

    • MojoeB
    • 1. Februar 2024 um 10:22

    Zu discord :
    wenn ich die discord application nutze funktioniert zwar alles in discord aber dadurch werden immer meine Audio Frequenzen umgestellt sodass ich in anderen Applikationen einen Störsound bekomme oder manchmal auch umgekehrt auf einmal macht mein Mico in anderen Applikationen stör Geräusche, und diese lassen sich meist nur resetten mit einem Neustart von dem audiogerät und Audio Driver. Deshalb habe ich eine sehr harte abneigung gegen discord.

    Aber im Browser wo die audioquelle vom Browser verwaltet wird da funktioniert es normalerweiße, denke ich ich sprech darüber eigentlich nicht so oft.

    Dafür habe ich teamspeak.


    achso und zu github hab mir mal einen Account erstellt vor einiger zeit aber genutzt habe ich diesen nicht.

    Und GIT kenn ich auch nicht.

  • Community Projekt: Teil 1 - Interesse an einem gemeinsamen größeren (Software)Projekt?

    • MojoeB
    • 31. Januar 2024 um 09:35

    gibts nicht schon sowas ? Winget ?

    Ich fände das auch eine tolle Idee, allerdings weiß ich da nicht brauchen wir nicht eine Art Zustimmung für Pakete?
    was für Pakete hast du den im sinn? Software o.o oder ?

  • VLC noch aktuell? [2024]

    • MojoeB
    • 30. Januar 2024 um 22:39

    WhiteHorse

    Hy, ich hab mal den Anfang gemacht und ein Beispiel erstellt.

    Damit kannst du VLC steuern ohne Steuerelemente die angezeigt werden du musst nur wie Schnuffel erwähnt hat der Commandozeilen folgen... und mit TCPSend absenden.
    Das Fenster irgendwie in eine GUI einzubetten habe ich noch nicht versucht.


    edit : ich hab grad nochmal rumversucht aber eingentlich am grundkonzept nichts geändert.. habe jetzt nicht neu gestartet, aber bei mir funktioniert es auf einmal nicht mehr kann das jemand bestätigen ?

    edit : Ich habe irgendwie rausgefunden wieso aber irgendwie auch nicht.

    wenn ich das hier:

    _vlc_start_server(true)

    starte und dann das script nochmal ausführe aber zum beispiel nur

    _add_video($vlcsockel, $testmp4)

    dann funktioniert es.


    In Taskmanger wird bei details 1 vlc instanz angezeigt.


    wenn ich es aber wie im Beispiel starte wird auch 1 vlc Instanz angezeigt aber ich kann nicht mit tcpconnecten ? erst wenn schon eine Instanz offen war geht es.

    AutoIt
    $testmp4 = ''
    
    example($testmp4)
    
    func example($testmp4)
    local $vlcsockel = ''
    	If _vlc_start_server(true) Then ;True um die Console auszublenden.
    		IF _vlc_tcp_connect($vlcsockel) Then 	
    		 _add_video($vlcsockel,  $testmp4) 
    		 _start_video($vlcsockel,  $testmp4)
    		EndIf 
    	EndIf	
    	Sleep(10000)
    	IF _vlc_tcp_disconnect($vlcsockel) Then 	
    		Exit 
    	EndIf
    EndFunc 
    
    
    Func __isVLCInstalled()
        Local $registryPaths[2] = ["HKLM\SOFTWARE\VideoLAN\VLC", "HKLM\SOFTWARE\WOW6432Node\VideoLAN\VLC"]
        Local $vlcInstallDir = ""
        For $i = 0 To UBound($registryPaths) - 1
            $vlcInstallDir = RegRead($registryPaths[$i], "InstallDir")
            If Not @error And $vlcInstallDir <> "" And FileExists($vlcInstallDir & "\vlc.exe") Then
                Return $vlcInstallDir & "\vlc.exe"
            EndIf
        Next
        Return False
    EndFunc
     
    func _vlc_start_server($hide = False, $hostip = '' , $port = '' ,$vlcConnectString = '' )
    	IF $hostip 			 = '' Then $hostip = 'localhost'		
    	IF $port 			 = '' Then $port = '4212'
    	IF $vlcConnectString = '' Then 
    	   $vlcConnectString = '-I rc --rc-host='&$hostip&':' & $port
    		Else  
    			$vlcConnectString = $vlcConnectString&'='&$hostip&':'& $port
    	EndIf	
    	
    	Local $vlcpath = __isVLCInstalled()
    	If $vlcpath Then 	
    		if $hide Then 
    			Run($vlcpath & ' ' & $vlcConnectString & ' ' & '', '', @SW_HIDE) 
    		ElseIf not $hide Then 
    			Run($vlcpath & ' ' & $vlcConnectString & ' ' & '')
    		EndIf		
    		Return True 		
    	Else 
    		Return False 	
    	EndIf 
    EndFunc 
    
    func _vlc_tcp_connect(byref $socket,  $ip = '',  $iport = '')
    If $ip   = '' Then $ip   =  '127.0.0.1'
    If $iport = '' Then $iport = 	4212
    	TCPStartup()
    	If @Error Then Return False 
    	$socket = TCPConnect($ip, $iport)
    	If @error Then Return False 
    	Return True  
    EndFunc
    
    func _vlc_tcp_disconnect(byref $socket)	
    	TCPSend($socket, "quit" & @CRLF)	
    	IF @Error Then MsgBox(0,  'VLC SERVERINSTATANZ',  'INSTANZ ist noch Aktiv konnte nicht geschlossen werden.')
    	TCPCloseSocket($socket)
    	TCPShutdown()	
    	If @Error Then Return False 
    	Return True  
    EndFunc
    func _start_video(byref $socket,  $filepath)
    	TCPSend($socket, "start "& @CRLF)	
    	If @Error Then Return False 	
    EndFunc
    func _play_video(byref $socket,  $filepath)
    	TCPSend($socket, "play " & $filepath & @CRLF)	
    	If @Error Then Return False 	
    EndFunc
    func _add_video(byref $socket,  $filepath)
    	TCPSend($socket, "add "&$filepath & @CRLF)	
    	If @Error Then Return False 	
    EndFunc
    Alles anzeigen
  • Community Projekt: Teil 1 - Interesse an einem gemeinsamen größeren (Software)Projekt?

    • MojoeB
    • 30. Januar 2024 um 13:00

    Ich teste grad zuhause Unraid, habe diesen noch nicht online verfügbar gemacht, wie gesagt ich testet erst mal.
    Wenn das Projekt nicht sofort startet kann ich mit der zeit eine mysqldatenbank aufsetzen falls gewünscht :).

    - ''Eine Client-Server Anwendung inkl. php und Frontend auf mySQL.''

    Genau sowas wollte ich auch noch auf Arbeit machen, mit einem Zugang zur Homepage wo dann mit php die mysqldatenbank liest und mit den Daten, Charts oder Diagramme erstellt.
    (ich bin grad dabei, mein anderes Programm darauf auszulegen bin aber erst beim einlogge verfahren da es mehrere ältere Versionen von meinem Programm gibt die später mit dem Update einfach komplett moduliert werden sollen und auf den gleichen stand gebracht werden.)

    Ich habe endlich von der IT-Seite einen MySQL Server bekommen. (nur für die Arbeit)
    Mit dem ich nun auch dinge machen kann die mir im weiteren Verlauf das leben einfacher machen.

    Zumbeipiel kann ich eine SQLlite Datensatz in der mysql datenbank sichern.
    Und ändern sich nur kleine dinge wie einen String dann kann ich diesen das nächste mal direkt in der Datenbank korrigieren.
    Wenn ein Nutzer keine Netzwerkverbinung zum mysql hat dann soll er immer die Daten aus der SQLite nehmen, wenn dem nicht so ist dann soll er die Daten aus mysql nehmen, wenn mysql verbunden ist die daten aber <> sind dann aktualisiere sqlite Datenbank.

    So Spielereien die mir damit das Leben einfach erleichtern.


    Falls jemand dazu fragen hat fragt gerne ^^ ist ein bissel offtopic sry.

  • Community Projekt: Teil 1 - Interesse an einem gemeinsamen größeren (Software)Projekt?

    • MojoeB
    • 30. Januar 2024 um 09:44

    Hay SOLVE-SMART :),

    Ich würde mithelfen,
    ich habe oft kleine Projekte auf der Arbeit mit denen ich mich wie ich selbst finde verbessert habe.

    - GUI´s kein problem (in autoit)

    -sqllite kein problem (in autoit)

    -mysql kein problem (in autoit)

    - Web Driver (in autoit) kenn ich mich schon gut aus aber nicht zu 100%, zum Beispiel mit den Werten die in _WD_CapabilitiesAdd() reinkommen bin ich nicht so vertraut, ich baue meins immer so auf das nur guestmodus im edge angeht.

    Die frage ist nur was machen wir :D?!

  • SAP (Gesucht wird ein deutschsprachiges Tutorial für AutoIt mit SAP)

    • MojoeB
    • 25. Januar 2024 um 08:24

    o.o hab einfach mal gegoogelt und bin auf Bilder.
    von dort aus habe ich diese Seite entdeckt : Tipp: So verwenden Sie AutoIt und SAP GUI Scripting ohne SAP ROT Wrapper | SAP-Blogs
    muss dazu sagen ich habe keine Ahnung von der Software die du nutzt. Aber es hat den Anschein das du es als als Objekt ansprechen kannst.
    aber wie der mini code in deinem vorhaben weiterhelfen soll kann ich dir auch nicht sagen .

  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 24. Januar 2024 um 10:52

    hay AspirinJunkie

    :) habe es nun nochmal ausführlich für meine zwecke getestet.
    ich brauche immer etwas um neue Sachen ganz zu verstehen ^^, aber es ist wirklich einfach danke für diese wunderbare UDF.

  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 18. Januar 2024 um 16:57

    also ich werde wahrscheinlich deswegen keine Probleme haben weil ich für meine daten selber sqlite nutze und dort die erste spalte immer als unique angeben habe.

    aber was geschieht wenn man in meinem beispiel 2mal homepage vorkommt?
    wie geht man dann mit den daten um?

    Das die UDF gefällt mir da ich auch grad fast alle meine guis mit maps erstelle.

  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 18. Januar 2024 um 16:36

    achso das heißt ich muss den header auf true setzen damit
    VARNAME,INWINDWO,ART,WERT,BESCHREIBUNG,FRAME

    diese als spaltennamen angezeigt werden und dann sollte das mit _td_toPrimaryKeys funktionieren ?

    ich teste es sofort :)

    Ja so funktioniert es :) ich hatte nur mein array an dein beispiel angepasst, jetzt ergibt es auch sinn :D

  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 18. Januar 2024 um 16:35
    Code
    VARNAME,INWINDWO,ART,WERT,BESCHREIBUNG,FRAME
    homepage,unloggt,link,http://192.168.66.77/,Loginpage,
    homepage_backup,unloggt,link,http://192.168.54.22/,Loginpage,
    input_benutzer,unloggt,xpath,"//*[@id=""ctl00_ContentPlaceHolder1_Login1_UserName""]",Input Benutzerfeld,
    input_passwort,unloggt,xpath,"//*[@id=""ctl00_ContentPlaceHolder1_Login1_Password""]",Input Passwortfeld,
    loginbtn,unloggt,xpath,"//*[@id=""ctl00_ContentPlaceHolder1_Login1_LoginButton""]",btn zum einloggen,
    login_error,unloggt,xpath,"//*[@id=""ctl00_ContentPlaceHolder1_Login1""]/tbody/tr/td/table/tbody/tr[6]/td",Fehler MSG beim Anmelden.,
    start2,Start2,hlink,linkt/gelink/Level09/Start2.aspx,wird am letzten teil einer Adresse hinzugefügt um einen Link aufzurufen.,
    tele,ExtCn,hlink,linkt/gelink/level05/ExtCntrl.aspx,wird am letzten teil einer Adresse hinzugefügt um einen Link aufzurufen.,

    hiermit funktioniert wieder das array.

  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 18. Januar 2024 um 16:25

    als beispiel : das als csv absichern:

    Halt ich verbessere die tabelle nochmal.... habs grad selbst mit dem string versucht da klappt das nicht ist flasch ausgerichtitet mom ich kopiere den gleich hier rein ich ändere nur ein paar daten.

    VARNAME,INWINDWO,ART,WERT,BESCHREIBUNG,FRAME
    homepage,unloggt,link,http://192.168.66.77/,Loginpage,
    homepage_backup,unloggt,link,http://192.168.54.22/,Loginpage,
    input_benutzer,unloggt,xpath,"//*[@id=""ctl00_ContentPlaceHolder1_Login1_UserName""]",Input Benutzerfeld,
  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 18. Januar 2024 um 16:16
    Code
    Func test()
    	local $sTaskListRaw = FileRead('Struckturwerte.csv'), $mTable[]
    	MsgBox(0, '', $sTaskListRaw )
    	local $mData =  _td_fromCsv($sTaskListRaw, ',', "", False )	
    	_td_display($mData, "example 1 - tasklist")
    
    	_td_toPrimaryKeys($mData, 0)
    	$mTable = _td_toPrimaryKeys($mData)
    	MsgBox(0, "homepage", $mTable.homepage.WERT)
    
    EndFunc 
    Alles anzeigen

    ==> Variable must be of type "Object".:
    MsgBox(0, "homepage", $mTable.homepage.WERT)
    MsgBox(0, "homepage", $mTable^ ERROR


    Wenn ich mir das array anschaue ist es so aufgbaut wie aus deinem beispiel von : example - toPrimaryKeys
    was mach ich falsch o.o`?

  • TableData - effizientere Arbeit mit tabellenstrukturierten Daten

    • MojoeB
    • 18. Januar 2024 um 15:21

    ich habe rein aus Interesse einfach mal meine sqllite tabelle aus dem db browser for SQLite kopiert und habe es einfach mal in einer text datei gesichert.(ansi)
    auf was beziehen sich immer die Freizeichen ? leider war die hälfte der Ergebnisse im Array Display abgeschnitten.


    edit: nun mit csv ausprobiert damit funktioniert es sehr leicht und ohne problme :)

  • revert im laufenden script.

    • MojoeB
    • 16. Januar 2024 um 20:26

    Ich glaube, ich verstehe noch nicht ganz, wie dein Skript uns unterstützen soll. 😄 Aber wenn ich es richtig auffasse, läuft deine Anwendung auf einem Server und du möchtest, dass das Skript ohne Neustart andere Aktionen ausführen kann, wie zum Beispiel den Text in einer anderen Farbe anzeigen, richtig?

    Das Ändern einer INI-Datei sollte tatsächlich jederzeit möglich sein. Das eigentliche Problem liegt wohl eher darin, den Code so zu gestalten, dass er solche Änderungen auch während des Betriebs übernehmen kann.
    Meistens bedeutet das, dass du eventuell einen Mechanismus implementieren musst, der auf Änderungen in der Konfigurationsdatei reagiert und entsprechend reagiert.
    Das kann beispielsweise ein Listener sein, der die INI-Datei periodisch auf Änderungen überprüft, oder ein Signal, das an das Skript gesendet wird, wenn eine Änderung vorgenommen wird.
    So könnte das Skript Anpassungen vornehmen, ohne neu gestartet werden zu müssen.

    Ich verstehe nicht was du mit den Synchronisieren der Dateien möchtest ?
    sind das große Dateien und Wie lange dauert den eine Synchronisieren bei dir im schnitt?
    Du könntest aufs Ersteller Datum/Uhrzeit prüfen und erst wenn Datei ca. 3h exzitiert dann schiebe sie rüber. Oder ist da ein anderes Problem, ich muss dazu sagen ich nutze keine Clouddienste.

  • Bildschirmkoordinaten durch ControlClick für MouseMove ermitteln

    • MojoeB
    • 16. Januar 2024 um 13:19

    super freut mich :)

  • Eigene Verschlüsselungsroutine

    • MojoeB
    • 12. Januar 2024 um 23:26

    Alina vielleicht ist das was für dich^^: AutoIt Obfuscator — Protect AutoIt Script Source Code (pelock.com)

    damit wird es noch schwieriger deinen code zu entschlüsseln.^^

  • Bildschirmkoordinaten durch ControlClick für MouseMove ermitteln

    • MojoeB
    • 12. Januar 2024 um 16:20
    Zitat von LabAutomat

    Du hast recht ich will nicht per AutoIt malen. 😉 Es dient lediglich zum ausprobieren der Mechanik.

    Ich möchte in einem anderen Programm Datenfiles auf einer Liste verschieben. Dies geht leider nicht per Tastenkombination sondern nur manuel mit der Maus. Da das Programmfenster und die Liste nicht immer an der selben Stelle ist, muss ich, wenn ich meine initiale Idee mit den Mouse-Befehlen verfolge, die Position bestimmen damit er die Datenfiles findet. Aber ich bin offen für effizientere Herangehensweisen.

    Viele Grüße 😊

    Hallo,

    ich glaube, du beziehst dich auf "Data files" (Datenfiles). Falls du ein Fenster mit einer Liste automatisiert ansprechen möchtest, könnte die MouseCoordMode-Option in AutoIt nützlich sein. Diese Option bestimmt, wie Koordinaten in den Mausfunktionen interpretiert werden. Es gibt drei Modi:

    0: Relative Koordinaten zum aktiven Fenster.
    1: (Standard) Absolute Bildschirmkoordinaten.
    2: Relative Koordinaten zum Client-Bereich des aktiven Fensters.
    Hier ein Beispiel, wie du es mit einer eigenen GUI verwenden kannst. Dies funktioniert aber auch mit jeder anderen Applikation, vorausgesetzt, sie ist geöffnet und du kannst den Fenstertitel mit dem in AutoIt mitgelieferten Tool identifizieren. Meiner Erfahrung nach funktioniert es dann wie gewünscht, dann fehlt nur noch das reinziehen das du möchtest da muss ich passen, sollte aber irgentwie machbar sein.


    Code
    #include <MsgBoxConstants.au3>
    
    ; Setzt MouseCoordMode auf 2, um relative Koordinaten zum Client-Bereich des aktiven Fensters zu nutzen
    Opt("MouseCoordMode", 2)
    
    ; Öffnet ein Testfenster
    $gui = GUICreate("Testfenster", 400, 300,  200, 300)
    GUISetState(@SW_SHOW)
    
    ; Wartet 2 Sekunden
    Sleep(2000)
    
    ; Bewegt die Maus zum Punkt (100, 100) im Client-Bereich des Testfensters
    MouseMove(100, 100)
    
    ; Zeigt eine Nachricht mit den aktuellen Mauskoordinaten an
    $x = MouseGetPos(0)
    $y = MouseGetPos(1)
    MsgBox($MB_SYSTEMMODAL, "Mausposition", "Die Mausposition ist: " & $x & ", " & $y)
    
    ; Schließt das GUI-Fenster
    GUIDelete($gui)
    Alles anzeigen
    Code
    #RequireAdmin ; muss drin sein wegen BlockInput
    ; Setze MouseCoordMode auf 2 für Koordinaten relativ zum Client-Bereich des aktiven Fensters
    Opt("MouseCoordMode", 2)
    
    example( )
    If ProcessExists ( "mspaint.exe" ) Then ProcessClose('mspaint.exe')
    example('sizemanipultion', 200 , 800)
    
    func example($function='', $ihigh='', $iWidth='')
    ; Starte mspaint
    Run("mspaint")
    ; Warte darauf, dass mspaint startet und speichere das Handle
    $hpaint=WinWait("Unbenannt - Paint", "", 10)
    ; Überprüfe, ob das mspaint-Fenster existiert
    If WinExists('Unbenannt - Paint' ) Then
       ; Warte darauf, dass mspaint geöffnet wird und aktiviere es
    
    	WinActivate($hpaint, "")
    	WinWaitActive($hpaint, "", 10)
    
    	If $function <> '' Then
    		Call($function, $hpaint, $ihigh, $iWidth);ändert die fenster größe
    		MsgBox(0, 'info', 'Das Fenster wurde auf die höhe : '& $ihigh&'x'& $iWidth &' angepasst.')
    
    	EndIf
    	MsgBox(0, 'info', 'Verschiebe das Paint-Fenster an eine neue Position, bestätige die Aktion mit OK und überwache anschließend das Fenster auf Aktioen.')
    
    
    	; Klicke auf "Datei"
    	BlockInput(1)
        MouseMove(32, 22, 10)
    	MouseClick('left')
    	Sleep(1000)
        ; Klicke auf "Bearbeiten"
       MouseMove(109, 22, 10)
    ;~    MouseClick('left')
        Sleep(1000)
    	; Klicke auf "Ansicht"
       MouseMove(190, 22, 10)
    ;~    MouseClick('left')
        Sleep(1000)
    	BlockInput(0)
    Else
        MsgBox(0, "Fehler", "Das Paint-Fenster mit dem angegebenen Handle wurde nicht gefunden.")
    EndIf
    EndFunc
    
    func sizemanipultion(byref $hwd, $iWidth,$iHeight)
    	WinMove($hwd, "", WinGetPos($hwd)[0], WinGetPos($hwd)[1], $iWidth, $iHeight)
    EndFunc
    
    
    ;noch ein paint beispiel beachte das es mit diese Methode nur funktioniert wenn sich die Sachen die du erreichen willst statisch in der gui vorhanden sind, ich habe noch eine größenmanipultion mit einbaut falls du sowas benötigen solltest.
    ;in diesem beispiel werden beide sachen ausgeführt einmal mit und einmal ohne größen manupilation, das heißt aber nicht das das bei jeder app geht aber einigen.
    Alles anzeigen
  • NEWBI: WebsiteEingabe mit wd_core.au3 / _WD_ClickElement undefined function Fehler

    • MojoeB
    • 10. Januar 2024 um 17:34

    Dann halt schritt für schritt, ich habe grad dir das nochmal erstellt beim testen bin ich fast durchgedreht weil plötzlich nichts mehr gestartet ist.
    nachdem ich mich intensiv auf die Fehlersuche begeben habe, ohne einen Grund zu finden.

    Habe ich mich dann doch mal entschlossen komplett neu zu starten.
    Naja ohne etwas zu ändern ging es nach dem Neustart wieder.

    AutoIt
    ;includes reichen diese vom webdriver udf, wenn du alle anderen au3 udfs korrekt hinterlegt hast, die benötigt werden.
    ;~ #includes <wd_capabilities.au3>
    ;~ #includes <wd_helper.au3>
    #include <nWebdriver\wd_capabilities.au3>
    #include <nWebdriver\wd_helper.au3>
    
    Global $hSession,  $iWebDriver_PID,  $capa = ''
    Global $webseite = 'https//www.google.de'	;<- Schritt 1,passe link an.
    $hSession = starteEdge()					;<- Schritt 2,starte den webdriver richtig.
    _WD_Navigate($hSession, $webseite) 			;<- Schritt 3, Webseite wird aufgerufen
    IF @error Then 
    	Webdrivererror(@Error,'_WD_Navigate')
    	WD_EXIT($hSession, $iWebDriver_PID)
    	exit
    Else 
    $sElement = _WD_FindElement($hSession, 'xpath', "//span[@tabindex='0'][contains(.,'12')]") ;<- Schritt 4, xpath wird gelesen.
    	IF @Error Then 
    		Webdrivererror(@Error,'_WD_FindElement')
    		WD_EXIT($hSession, $iWebDriver_PID)
    		Exit 
    	Else 
    		_WD_ElementAction($hSession, $sElement, 'click') ;<- Schritt 5 klick aufs element.
    		If @Error Then 
    			Webdrivererror(@Error,'_WD_ElementAction')
    			WD_EXIT($hSession, $iWebDriver_PID)
    			exit
    		EndIf
    	EndIf
    EndIf  
    	
    MsgBox(0,  'Info',  'Scirpt wurde komplett ausgeführt glückwunsch, element sollte geklickt sein!');<- Schritt 6 ende.
    WD_EXIT($hSession, $iWebDriver_PID)	;<- beende alles wieder.
    exit
    	
    
    Func starteEdge()
        Local $session
        SetupEdge(1) ;<- STARTE mit PARAMETER 0, 1 oder 2 / 0 ist ohne konsole, die anderen zwei rufen die console auf. 
        If Not $capa Then
            ConsoleWrite('Fehler beim Erstellen, Programm wird beendet.' & @CR)
            WD_EXIT($hSession, $iWebDriver_PID)
            Exit
        Else
            $session = _WD_CreateSession($capa)
            If Not $session Then
                ConsoleWrite('Fehler beim Erstellen _WD_CreateSession, Programm wird beendet.' & @CR)
                WD_EXIT($hSession, $iWebDriver_PID)
                Exit
            Else
                Return $session
            EndIf
        EndIf
    EndFunc
    
    
    
    Func SetupEdge($opt = 0)
    	Local $log = False
    	IF $opt = 0 Then 
    		$_WD_DEBUG = $_WD_DEBUG_None ;keine console
    	ElseIf $opt = 1 Then 	
    		$_WD_DEBUG = $_WD_DEBUG_Full ;console mit full debug
    		$log = true
    	ElseIf $opt = 2 Then 	
    		$_WD_DEBUG = $_WD_DEBUG_Info ;console mit info
    		$log = true
    	EndIf	
    		
    		_WD_UpdateDriver('msedge', @Tempdir & '\msedge\') ;automatisches runterladen des webdrivers falls nicht vorhanden.
    		_WD_Option('Driver', @Tempdir & '\msedge\msedgedriver.exe');setze den Driver.
    		_WD_Option('Port', 9515);setze den Port.
    	IF $log Then
    			_WD_Option('console', @ScriptDir & '\WD_Console.log');ist $log true dann nimm den log auf.
    	EndIf
    		$iWebDriver_PID = _WD_Startup();starte den webdriver.
    		If @error Then Webdrivererror(@Error,'iWebDriver_PID')
    		_WD_CapabilitiesStartup()
    		_WD_CapabilitiesAdd('alwaysMatch', 'msedge')
    		_WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
    
    ;~         _WD_CapabilitiesAdd('args', 'disable-gpu') ; Manchmal notwendig für Headless	
    		_WD_CapabilitiesAdd('args', 'guest')
    		_WD_CapabilitiesDump(@ScriptLineNumber)
    		 $capa = _WD_CapabilitiesGet()
    	EndFunc   ;==>SetupEdge
    
    	
    func WD_EXIT(ByRef $sSession, ByRef $iWebDriver_PID)
    	_WD_DeleteSession($sSession)
    	_WD_Shutdown($iWebDriver_PID,Default)
    	$sSession = ''
    EndFunc 
    	
    Func Webdrivererror($error, $Element = '', $opt = '')
       Select
           Case $error = $_WD_ERROR_Success
               ConsoleWrite($Element & ' ' & $opt & ' ' & 'DONE' & @CRLF)
           Case $error = $_WD_ERROR_NoMatch
               ConsoleWrite('Fehler beim Finden des Elements.' &$Element & @CRLF)
           Case $error = $_WD_ERROR_SessionNotCreated
               ConsoleWrite('Session konnte nicht erstellt werden.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_Exception
               ConsoleWrite('Eine Ausnahme ist aufgetreten.' &$Element & @CRLF)
           Case $error = $_WD_ERROR_Timeout
               ConsoleWrite('Zeitüberschreitung bei der Anforderung.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_InvalidDataType
               ConsoleWrite('Ungültiger Datentyp angegeben.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_InvalidExpression
               ConsoleWrite('Ungültiger Ausdruck.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_RetValue
               ConsoleWrite('Ungültiger Rückgabewert.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_InvalidArgue
               ConsoleWrite('Ungültiges Argument.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_NoAlert
               ConsoleWrite('Kein Alert vorhanden.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_GeneralError
               ConsoleWrite('Allgemeiner Fehler.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_InvalidValue
               ConsoleWrite('Ungültiger Wert.' &$Element  & @CRLF)
           Case $error = $_WD_ERROR_FileIssue
               ConsoleWrite('Problem mit der Datei.' &$Element  & @CRLF)
           Case Else
               ConsoleWrite('Ein unbekannter Fehler ist aufgetreten. Fehlercode: ' & $error & &$Element&  @CRLF)
       EndSelect
    EndFunc   ;==>Webdrivererror
    Alles anzeigen
  • QTWidget fernsteuern ...

    • MojoeB
    • 10. Januar 2024 um 10:13

    wenn du es mit der autoit eigenen application nicht auslesen kannst gibt es noch :

    UIASpy - UI Automation Spy Tool - AutoIt-Beispielskripte - AutoIt-Foren (autoitscript.com)

    Verwenden von UI Automation-Code in AutoIt - AutoIt-Beispielskripts - AutoIt-Foren (autoitscript.com)

    allerdings bin ich da nicht im Thema drinnen und kann dir keine hinweise liefern wie du bsp. damit einen click simulierst.

  • NEWBI: WebsiteEingabe mit wd_core.au3 / _WD_ClickElement undefined function Fehler

    • MojoeB
    • 9. Januar 2024 um 23:23

    ist egal mit welchem browser du den xpath ausließt.

    ja water hat es schon richtig gesagt


    hier nochmal eine Ergänzung :

    Code
    _WD_Navigate($hSession, 'link')
    $sElement = _WD_FindElement($hSession, 'xpath', "//span[@tabindex='0'][contains(.,'12')]")
    _WD_ElementAction($hSession,  $sElement, 'click')

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™