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. SOLVE-SMART

Beiträge von SOLVE-SMART

  • Webdriver für Chrome

    • SOLVE-SMART
    • 7. Mai 2024 um 16:07

    Wunderbar, falls dies für dich so funktioniert. Ich weiß nicht ob die Klasse ".sc-dcJsrY.dWLoUN" sich verändern wird (also dynamisch ist), daher würde ich über das data-testid Attribute gehen. In etwa so, auch wenn ich es nur JavaScript seitig im Browser getestet habe (DevTools), sollte es genauso auch im WebDriver Skript funktionieren. Kannst du ja gern mal ausprobieren 😀 .

    1. Suche im Dokument das Element vor dem "shadow-root (open)" Bereich.
      ==> Das DIV mit der ID "#usercentrics-root" (CSS Selector).
    2. Suche den Button "Alles Akzeptieren" innerhalb des Bereichs (des ShadowDOM).
      ==> Ebenfalls CSS Selector, "button[data-testid='uc-accept-all-button']".
    3. Klick das gefundene Element, fertig.
      ==> .click()
    AutoIt
    _ClickShadowDomElement('#usercentrics-root', 'button[data-testid="uc-accept-all-button"]')
    
    Func _ClickShadowDomElement($sCssSelectorBeforeShadowRoot, $sCssSelectorTargetInShadowDom)
        Local $sJavaScriptCode = StringFormat( _
            'document' & _
                '.querySelector("%s")' & _
                '.shadowRoot.querySelector("%s")' & _
                '.click();', _
            StringReplace($sCssSelectorBeforeShadowRoot, '"', "'"), _
            StringReplace($sCssSelectorTargetInShadowDom, '"', "'"))
    
        _WD_ExecuteScript($sSession, $sJavaScriptCode)
    EndFunc
    Alles anzeigen

    Viele Grüße
    Sven

    Update: Nach Hinweis im Post #29 ist der Code hier (Post #28) nun korrigiert und funktioniert wie gewünscht.

  • Webdriver für Chrome

    • SOLVE-SMART
    • 7. Mai 2024 um 15:30

    Hi Marcel 👋 ,

    mal von hinten nach vorn. Bei der Lotto-Thüringen Seite ist es recht einfach.
    Nimm den XPath den du hast - wahrscheinlich über den Browser generieren lassen, richtig 😀 ?
    Oder nimm diesen //div[@id="ccm-widget"]//button[text()="Alle akzeptieren"].

    ------------------------

    Bei der ersten Seite, ist der Usercentrics Cookie Consent Dialog im Shadow DOM (nach)geladen. Daher kommst du auch mit XPath dort nicht heran.
    Dies ist eine bekannte Einschränkungen, falls es nicht mittlerweile anders sein sollte. Was du tun kannst ist entweder über CSS Selector gehen (wobei das mit ziemlicher Sicherheit auch nicht funktionieren wird) oder besser den Klick per Javascript senden.

    Chrome DevTools Ansicht

    grafik.png

    ------------------------

    Eine recht gute Erläuterung zum 🔗 ShadowDOM .

    Ich schaue mal ob ich zeitnah dazu komme dir eine entsprechende Funktion zu basteln, sollte nicht lang dauern.
    Doch ich würde es natürlich testen wollen, daher etwas Geduld 🤝 .

    Viele Grüße
    Sven

  • Ausführung eines externen Programms mit aktivem Account.

    • SOLVE-SMART
    • 3. Mai 2024 um 07:27

    War auch mein erster Impuls @Musashi , als ich den Thread gestern laß, doch bin mir ebenfalls etwas unsicher.
    Jedoch wirst du hipfzwirgel dies sicherlich gut testen können mit dem Vorschlag Run/RunWait 🤞 .

    Viele Grüße
    Sven

  • USB Gerät Power source Infos auslesen

    • SOLVE-SMART
    • 30. April 2024 um 13:33

    Danke dir Moombas 😀 , so genau hatte ich mir dies nicht angeschaut. Aber gut zu wissen.

  • USB Gerät Power source Infos auslesen

    • SOLVE-SMART
    • 30. April 2024 um 12:31
    Zitat von BiNu

    Gewisse Geräte brauchen mehr Strom als gewisse USB-Hubs liefern die % Anzeige würde dann mit der Zeit runter gehen bis das Gerät abstellt oder bootloopt (sehr schlecht für den Akku).
    Ziel ist es dies vorzeitig zu erkennen und den User zu warnen.

    Danke BiNu für die Erläuterung. Interessant zu verstehen 🤝 . Allerdings werde ich dir wenig helfen können, ohne erst selbst länger recherchieren zu müssen.
    Falls du mit Powershell oder WMI was passendes finden solltest, dann geb Bescheid. Dies dann durch AutoIt aufzurufen ist wieder easy.

    Hoffe die anderen Schlaufköpfe 😄 hier, können dir noch paar Tipps geben.

    Viele Grüße
    Sven

  • GUI - dynamische Button mit Daten aus DB erstellen

    • SOLVE-SMART
    • 29. April 2024 um 20:07
    Zitat von AspirinJunkie

    Wow bin stolz auf mich, dass mein Code offensichtlich autoplausibel ist, dass auch andere ihn sofort anpassen können.

    😄 👌


    Zum Code:
    Wie immer tadellos, sogar mit deutschen Kommentaren. Mal sehen ob ich mir dies irgendwann mal als Beispiel nehmen kann 😅 .
    Kleine Ausnahme: $eID wird nicht verwendet.

    Viele Grüße
    Sven

  • USB Gerät Power source Infos auslesen

    • SOLVE-SMART
    • 29. April 2024 um 16:59

    Hi BiNu ,

    schau dir doch gern mal _WinAPI_GetSystemPowerStatus in der Hilfe an.
    Function _WinAPI_GetSystemPowerStatus

    Wenn "AC Power" offline angezeigt wird, dann ist die source Battery, andernfalls eben Netzteil, Stromnetz (AC).

    Update1: Sorry, ich sehe gerade du redest von einem USB Device (Windows phone) ... ahhh, 🤔 .

    Update2: Für was brauchst du die Info? Wenn du ein Smartphone an den Rechner/Laptop anschließt, ist es doch immer Battery/Akku als Quelle oder nicht?

    Viele Grüße
    Sven

  • GUI - dynamische Button mit Daten aus DB erstellen

    • SOLVE-SMART
    • 29. April 2024 um 15:46
    Zitat von Moombas

    Wegen deiner Frage zu dem von AspirinJunkie: Garnicht, zumindest nicht ohne gleichzeitig die Abstände aller Buttons zueinander zu ändern.

    Genau, siehe Antwort #26.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • SOLVE-SMART
    • 29. April 2024 um 15:45

    Zeile 43 ($iGUIHeight) und Zeile 60 ($iButtonY) bspw. + 50 ergänzen, fertig.
    Aber du willst den Platz sicherlich für irgendwas nutzen, richtig?

    Viele Grüße
    Sven

  • Select Combo Entry

    • SOLVE-SMART
    • 29. April 2024 um 11:14

    Bestens oh-ha 👌 .
    Eine kleine Verbesserung vielleicht noch - und mir ist klar ist nur ein Beispiel von dir 🤝 - die Cases können gleich zusammengefasst werden.

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    
    #include-once
    #include <GUIConstantsEx.au3>
    
    GUICreate("Form1", 284, 155, 192, 124)
    Global $Combo1  = GUICtrlCreateCombo("", 16, 16, 217, 25)
    Global $Button1 = GUICtrlCreateButton("Beenden", 16, 96, 75, 25)
    GUISetState(@SW_SHOW)
    
    Global $sFilePath = @ScriptDir & "/config123.ini"
    Global $sRead     = IniRead($sFilePath, "Hardware", "CPU", "")
    GUICtrlSetData($Combo1, "512|1024|2048|4096|6144", $sRead)
    
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $Button1
                Global $lesen = GUICtrlRead($Combo1)
                IniWrite($sFilePath, "Hardware", "CPU", $lesen)
                ExitLoop
        EndSwitch
    WEnd
    Alles anzeigen

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 23. April 2024 um 18:48

    Hi Marcel 👋 ,

    ich hoffe wir langweilen mittlerweile hier niemand mit unserem Austausch. Falls doch, dann darf gern durch eine Moderator, Poweruser etc. darauf hingewiesen werden. Denn dann schlage ich vor, dass wir einen separaten Thread rund um die Arbeit mit WebDriver öffnen oder so.

    Falls sich niemand daran hier stört, mache ich einfach weiter 😅 .

    ------------------------

    Nun also zur Antwort:

    Zitat von gmmg

    habe mir mal dein Boilerplate Tutorial angesehen und auch Abonniert :)

    Freut mich das du dir es angesehen hast, Danke auch fürs Abo 👌 .
    PS.: Ein GitHub-Star würde mich noch viel mehr freuen 😅 .

    Zitat von gmmg

    Was mir in der Struktur nicht gefällt, dass alle selector und page-objects in der Ebene 1 liegen. Schon bei einigen Websites wird es meiner Meinung nach unübersichtlich, wenn alles im Hauptpfad liegt.

    Wie du dein Projekt strukturierst ist ganz dir überlassen. Das boilerplate template repository ist für die Browser Automation einer Website aufgebaut, daher gibt es keine Aufteilung nach Webseiten oder so.

    Zitat von gmmg

    Ich stelle mir die Aufteilung eher so vor. Hat das irgendwelche Nachteile gegenüber deiner Aufteilung? Was meinst du dazu?

    Das kannst du auf jeden Fall so machen ohne starke Nachteile zu haben. Musst dann einfach nur die #includes entsprechend einmalig anpassen, ansonsten geht auch dies.

    Empfehlung:
    Ich rate allerdings davon ab mehrere Projekte, respektive Webseiten, in einem Repository/Projekt abzubilden. Zumindest wenn es um diverse Test Automation Schritte geht, die pro Webseite dann auch abgebildet werden sollen. Mit anderen Worten, wenn es umfangreich werden wird, dann rate ich davon ab und rate zu einzelnen Projekten. Üblicherweise würde man, so machen es viele Hersteller/Communities (wie Selenium, WebdriverIO, Nightwatch, Playwright etc.) vor, pro Website ein Projekt (ein Repo.) aufbauen. Damit du dennoch Redundanzen zwischen den Projekten vermeidest, würde dann bspw. mit Git Submodules gearbeitet. Aber auch dies ist kein Muss.

    Zusammenfassend:
    Du kannst wenn die Schritte ggf. nicht zu umfangreich sind, deine vorgeschlagene Struktur nutzen.
    Könnte dann wohl etwa so aussehen.



    Du kannst auch per Browser-Tab eine Website bearbeiten/automatisieren, also drei auf einmal (in jeweils einem Tab).
    Du kannst auch drei Driver-Instanzen laufen lassen und jeweils dort die Schritte automatisieren. Dies ist allerdings recht aufwändig, zugegebenermaßen.

    Also ich würde es abhängig vom Umfang machen und entscheiden. So wie du bisher beschrieben hast, was getan wird, finde ich deinen Ansatz pro Webseite legitim und sogar sinnvoll 😀 . Wenn es wächst wirst du dann ja merken ob es umstrukturiert werden sollte oder nicht.

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 22. April 2024 um 15:54

    Danke dir Marcel, dies ist verständlich 👌 .

    Allerdings hört sich das so an, als wären die Credentials von findigen Mitarbeitern ggf. einsehbar. Der/die HTTP-Requests, auch die des WebDrivers (Chromedriver) sind ja nicht verschlüsselt und könnten mit etwas Energie beobachtet/herausgefischt werden. Klar, ein sehr skizziertes Szenario was vielleicht nicht relevant ist. Ich wollte es dennoch mal erwähnen 😅 .

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 22. April 2024 um 14:42
    Zitat von gmmg

    Die Automatisierung selbst übergibt nur Login Daten

    Was heißt das? Es wird doch nicht nur ein Login automatisiert oder? Also wird dann im Chromedriver durch die 300 Nutzer gearbeitet oder wie und was macht ihr genau?
    Jetzt bin ich neugierig 🤔 😅 .

    Viele Grüße
    Sven

  • Label ausdrucken

    • SOLVE-SMART
    • 20. April 2024 um 21:14

    Ich stimme oh-ha zu, gert_nrw_71 . Ein Serienbrief oder ein PDF-Formular ist sicherlich schneller aufgesetzt/eingerichtet also über eine AutoIt GUI.
    Auch der Weg den Oscar beschreibt geht sicherlich, doch ist meines Erachtens noch anspruchsvoller. Besonders wenn es dann um den eigentlichen Druck geht.
    Die Print UDFs die ich aus der Vergangenheit kenne, waren nicht besonders - kann sich natürlich geändert haben.

    Zitat von gert_nrw_71

    [...] aber ich bin bereit da Zeit zu investieren, zumal es mir immer viel spaß macht etwas zu programmieren [...]

    Aus 'ner AutoIt-GUI heraus die Daten dann als Website (mit entsprechenden Styling (CSS)) darstellen, finde ich nicht schlecht / vertretbar. Im Browser ist der Druck dann sicherlich recht easy. Nicht so toll wie direkt über 'ne Print-UDF, aber geht.

    💡 Allerdings würde ich persönlich nicht erst über 'ne GUI gehen. Warum solltest du jedesmal einzeln dort alles eintragen? Du kannst doch in eine Plain-Text-Datei (CSV-Format bspw. oder JSON-Format) alles wichtige schreiben. Zeile für Zeile und es hintereinander abarbeiten lassen (als Website speichern, drucken, nächstes Label) ohne das du überhaupt 'ne GUI brauchst. Dort hast du auch volle Kontrolle über die Daten.

    ---------------------------------

    Naja, es gibt viele Wege wie man dies umsetzen kann. Bin gespannt was du am Ende tun wirst 😇 .

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 20. April 2024 um 21:05

    Hi Marcel 👋 ,

    mal ein paar Fragen zum Ganzem:

    • Wie häufig läuft die Automatisierung überhaupt und für wie lange?
    • Also stört es wirklich das erst eure Intranet-Seite vorher geladen wird und dann die eigentliche Seite?
    • Geht es hier um 2 Sek. zeitlichen Unterschied zu vorher oder eher um 10 Sek. bspw.?
    • Mit was kannst du besser leben - immer den Cookie Consent zu bestätigen/wegzuklicken (einmal implementiert und fertig) oder die zusätzliche Wartezeit aushalten 😅 ?

    Also ich frage mich ob es ein wirkliches Problem ist oder aus dem Interesse heraus gewachsen ist, das möglichst alles stimmt/verbessert ist (was ich auch nachvollziehen könnte).

    Wie gesagt, bei weiteren Fragen immer gerne 🤝 .

    Viele Grüße
    Sven

  • Label ausdrucken

    • SOLVE-SMART
    • 20. April 2024 um 06:27

    Hi gert_nrw_71 👋 ,

    mit welchen Programm hast du denn Screenshot erstellt? Kannst du nicht einfach darin auf drucken drücken und fertig?
    Falls es nicht nur um diese einmalige Sache geht, um dieses eine Label, dann wäre eine Automatisierung ggf. sinnvoll.

    Wie steht es denn um deine Erfahrung mit AutoIt? Falls du eher Einsteiger mit der Sprache bist, würde ich je nach Label-Anzahl, eher einen Serienbrief in MS Word oder ähnlichen Programmen erstellen und dort die dynamischen Werte ändern lassen, dann ausdrucken und fertig.

    Bin gespannt wie deine Antwort(en) sein werden 😀 .

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 19. April 2024 um 13:17

    Hi Marcel, ah okay. Du möchtest du Cookie bzw. DSGV-Bestätigung nicht jedes Mal machen müssen, richtig?
    Ich habe dies bisher einfach mit automatisiert, denn so ein Klick am Anfang hat mich nie gestresst, aber okay.

    Das heißt also, wenn du --user-data-dir angibst, wird wieder erst die Intranet-Seite geladen und dann erst deine eigentliche?
    Falls dem so ist und du nicht auf --user-data-dir verzichten willst, dann können wir ggf. noch weitere Capabilities identifizieren welche das Ladeverhalten der "ersten" Seite (Intranet bei dir) ggf. unterbinden. Allerdings nur wenn es wirklich den Bedarf gibt.

    Mit Firefox gibt es bspw. browser.startup.homepage was deine Ziel-Url sein könnte, jedoch ist das Firefox spezifisch und auf die Schnelle habe ich nichts dazu für Chrome gefunden.

    Zitat von gmmg

    Danke für deine Mühe mit mir :)

    Gerne 🤝 .

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 18. April 2024 um 20:15

    Hi Marcel,

    Zitat von gmmg

    hast du vielleicht für den Chrome ein einfachen Beispiel Script, was ich mir bearbeiten kann, also mit dem neuen Aufbau?

    genau solche Beispiele findest du im GitHub Repository au3webdriver-boilerplate . Im post #8 hatte ich dir die Videoerklärung auch verlinkt.
    Allerdings ist dies eine größere Änderung für dich denke ich, da es sehr von deinem Skript abweicht. Dennoch, vielleicht hilft es - denn das Projekt mit POM Struktur (page object model) ist dafür ausgelegt auch mit größeren Browser Automatisierungsaufgaben umgehen zu können - zumindest behaupte ich dies 😅 .

    Schaue dir bitte einfach die README.md an, darin findest du hoffentlich ein paar Anreize.

    Zitat von gmmg

    Wenn ich die DesiredCapabilities ohne --user-data-dir= aufrufe, werden die Cookies nicht gespeichert, deshalb ist der Aufruf hinterlegt.

    Wozu benötigst du die Cookies denn? Was genau tust du/ihr, in der Browser Automation?

    -----------------------

    Falls dir die Videos nicht zusagen oder du mit der README nicht klar kommst, dann kann ich es auch gern nochmal kurz herunterbrechen und es hier schreiben wie es gedacht ist usw. Doch genau damit ich dies nicht tun muss, habe ich ja die Beschreibung (README) und die Videos erstellt 😇 .

    Viele Grüße
    Sven

  • Automatisierung von Lieferplananpassungen: Einsatz von AutoIT zur Effizienzsteigerung

    • SOLVE-SMART
    • 18. April 2024 um 19:45

    Alles klar, Danke für die Erläuterung und viel Glück und Erfolg dabei Mücke 😀 .
    Melde dich wenn wir unterstützen können.

    Viele Grüße
    Sven

  • Automatisierung von Lieferplananpassungen: Einsatz von AutoIT zur Effizienzsteigerung

    • SOLVE-SMART
    • 18. April 2024 um 11:15

    Nun fehlt mir erneut der LIKE 👍 Button - super Zusammenfassung water .
    Alle Wege führen nach Rom, der eine schneller als der andere 😀 .

    Viele Grüße
    Sven

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™