Ich bin sehr daran interessiert, denn ich mache derzeit die Browserautomation mit UI Automation
Ich habe mir da auch schon eine UDF geschrieben, um die Redundanzen zu vermeiden. Darum bin ich auf die Alternativer WebDriver gespannt.
Ich bin sehr daran interessiert, denn ich mache derzeit die Browserautomation mit UI Automation
Ich habe mir da auch schon eine UDF geschrieben, um die Redundanzen zu vermeiden. Darum bin ich auf die Alternativer WebDriver gespannt.
OK, zu langsam...
Run ('F:\test\summatraPDF.exe "F:\ich werde gezeigt.pdf"')
Setze um die " (doppelten Anführungszeichen) die ' (einfachen Anführungszeichen)
$sRow &= $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
sollte eher
$sRow &= $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
sein
Ja natürlich - das kommt von C&P ohne Korrekturlesen....
ändere mal
$sRow = $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
in
$sRow &= $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
(also mach aus = ein &= )
Peter S. Taler Danke für Deine Einschätzung
Peter S. Taler was hältst Du von dem Boden? https://www.berlin-parkett.de/Enia-Nauders
BugFix Sorry für das Kapern - wir renovieren auch gerade...
Probier mal das in Zeile 17: Global $Liste = _ArrayToString($aTest, @CRLF)
Mach einmal einen MouseMove() zu den Koordinaten, um zu sehen, ob diese überhaupt stimmen.
Evtl. macht Dir die Skalierung einen Strich durch die Rechnung.
..., dass der Speicher am Ende in jedem Fall per free() wieder freigeräumt wird ...
das machen jetzt angeblich die modernen Betriebssysteme von selbst.
Ich habe noch gelernt, auf jeden fall free() zu verwenden und auch mit valgrind zu prüfen, ob das alles sauber erfolgt ist - aber das ist scheinbar mittlerweile überholt
Aus der Hilfe zu ControlSend:
Function ControlSend
ControlSend ( "title", "text", controlID, "string" [, flag = 0] )
Du hast keine controlID. Dein Befehl müsste so ausschauen:ControlSend("Anmeldeassistent", "", "<hier muss die controlID rein>", "{ENTER}")
controlID: Da schreibst du das rein, was Du in Au3Info unter Advanced (Class) bekommst: z.B. "[CLASS:Scintilla; INSTANCE:1]"
ACHTUNG: In meinem Beispiel steht die controlID von SciTE drin - da musst Du Deine einsetzen, also nicht [CLASS:Scintilla... übernehmen. Wenn Du gar nicht klarkommst, dann schick einen Screenshot von Au3Info
Schau mal, ob Du damit den Inhalt des Feldes lesen kannst:
Du muss aber TfrmKaufmannMain durch die Klasse des Fensters ersetzen - oder alternativ das [CLASS:TfrmKaufmannMain] durch den Fensternamen.
ControlGetText("[CLASS:TfrmKaufmannMain]", "", "[CLASS:OFormSub; INSTANCE:2]")
und dann schau, ob Du mit
ControlSetText ( "[CLASS:TfrmKaufmannMain]", "", "[CLASS:OFormSub; INSTANCE:2]", "new text") etwas hineinschreiben kannst - hier gilt das gleiche für [CLASS:TfrmKaufmannMain]
Hallo TottoW,
ich habe vor vielen Jahren mal Sage mit AutoIt automatisiert.
Ich weiß nicht, ob es da Änderungen an der Oberfläche gegeben hat, aber da konnte man alle Felder sauber identifizieren und direkt ansprechen.
Schau Dir in dem Zusammenhang mal Controlsend, ControlSetText und ControlClick an.
Many people put an underscore at the beginning of user-defined functions to disginguish them from built-in functions:
Quelle: https://www.autoitscript.com/f…/2337-naming-conventions/
Schau mal, ob es das ist, was Du suchst:
#include <Excel.au3>
Opt("MustDeclareVars", 1)
Exit (_Main() = 0 ? MsgBox(16, '', 'Programm mit Fehler beendet') : MsgBox(0, '', 'Programmende', 1))
Func _Main()
Local $sFile = @ScriptDir & '\MyExcelFile.xlsx' ; <===== hier den Dateinamen einsetzen
Local $oExcel = _Excel_Open()
If @error Then Return SetError(1, 0, MsgBox(16, '_Excel_Open', '@error: ' & @error) * 0)
If Not IsObj($oExcel) Then Return SetError(1, 1, MsgBox(16, '_Excel_Open', '$oExcel is not an Obj') * 0)
Local $oWorkbook = _Excel_BookOpen($oExcel, $sFile)
If @error Then Return SetError(2, 0, MsgBox(16, '_Excel_BookOpen', '@error: ' & @error) * 0)
If Not IsObj($oWorkbook) Then Return SetError(2, 0, MsgBox(16, '_Excel_BookOpen', '$oWorkbook is not an Obj') * 0)
; damit kann man sich den Usernamen anzeigen lassen
Local $sUsername = $oWorkbook.Application.UserName
MsgBox(0, 'Username', $sUsername)
; alten Wert auslesen und anzeigen
Local $sAuthor = $oWorkbook.BuiltinDocumentProperties("Author").Value
MsgBox(0, 'Author', $sAuthor)
; neuen Wert setzen
$oWorkbook.BuiltinDocumentProperties("Author").Value = "Neuer User" ; <===== hier den Namen eingeben
; neuen Wert anzeigen lassen
$sAuthor = $oWorkbook.BuiltinDocumentProperties("Author").Value
MsgBox(0, 'Author', $sAuthor)
; damit kann man sich "zuletzt geändert von" anzeigen lassen
$sAuthor = $oWorkbook.BuiltinDocumentProperties("Last author").Value
MsgBox(0, 'Last author', $sAuthor)
_Excel_BookClose($oWorkbook, True) ; speichern nicht vergessen
If @error Then Return SetError(3, 0, MsgBox(16, '_Excel_BookClose', '@error: ' & @error) * 0)
_Excel_Close($oExcel)
If @error Then Return SetError(4, 0, MsgBox(16, '_Excel_Close', '@error: ' & @error) * 0)
Return SetError(0, 0, 1)
EndFunc ;==>_Main
Alles anzeigen
Ich lasse noch zusätzlich ein paar andere Werte anzeigen, wenn Du das nicht brauchst, dann einfach entfernen
und die "Höhner" auftreten (nix gegen die Höhner, ich bin seit 40 Jahren Fan der Kölner, aber nicht in Wacken...) muss ich da auch nicht mehr hin...
Um es mit den Worten eines Mitleidenden zu sagen:"...ich will meinen Lemmy wiederhaben..."
Ist mit fast 55 Jahren mein erstes Wacken - ich dachte mir, dass sollte man schon mal gesehen haben. Lemmy habe ich gesehen, als ich jung war
Viel Spaß bei den Stones
Zudem sollte man erst damit beginnen, nachdem man mindestens 10
Baräh Bier in Barbara's Rhabarber-Bar getrunken hat.
Da ich gerade in Wacken bin, kann ich dem nur zustimmen
Ist es das, was Du suchst?
#include <Array.au3>
$sString = ';{"id":1,"result":"ulKeUwSWS5V5zKcyohTHtB8XfIo~91OJ","error":null}'
$sString &= ';{"id":1,"result":{"status":"Invalid user name or password"},"error":null}'
$sString &= ';{"id":1,"result":{"status":"Sie haben die maximale Anzahl an Anmeldeversuchen erreicht. Bitte warten Sie 10 Minuten, bevor Sie es erneut versuchen."},"error":null}'
$sMyRegex = '(?<=;{"id":1,"result":)(?:{"status":"|")(.+?)(?="(?:}|),"error":null})'
$aResult = StringRegExp($sString, $sMyRegex, 3)
_ArrayDisplay($aResult)
Alles anzeigen