Post by gregster » 15 May 2020, 04:19
Dann probier doch mal bitte das hier.
(
WinWait ist nun raus, da kein sichtbares Window existiert; ein zusätzlicher
headless-Parameter
; ein abschließender
Kill()-Befehl, um die Chrome-Instanz nach getaner Arbeit zu schließen).
Code: Select all
#NoEnv
SetBatchLines, -1
#Include Chrome.ahk
url := "http://192.168.120.176"
; --- Create a new Chrome instance ---
FileCreateDir, ChromeProfile ; creates a profile subdirectory in current folder
ChromeInst := new Chrome("ChromeProfile", , "--headless")
; --- Connect to the page ---
if !(Page := ChromeInst.GetPage( ) )
{
MsgBox, Could not retrieve page!
ChromeInst.Kill()
}
else
Page.WaitForLoad()
Page.Call("Page.navigate", {"url": url}) ; Navigate to url
Page.WaitForLoad()
Page.Evaluate("document.getElementById('ui_btn_2_1').click()")
sleep 5000
ChromeInst.Kill()
return
Esc::ExitApp
Das
sleep 5000 sollte hoffentlich lang genug sein (vermutlich ginge es kürzer), bevor die Chrome-Instanz nach dem Klick geschlossen wird (eine einzige Instanz öffnet immer eine ganze Menge von Prozessen - am besten checkst du mal im Taskmanager, ob die alle zugehen; hier scheint's zu klappen). Jetzt kannst du es natürlich, nach Belieben, in einen Hotkey umwandeln oder mit einem Button verknüpfen.
Viel Erfahrung mit dem
headless-Modus von Chrome hab ich nicht... wenn Tempo wichtig wäre, wäre zu überlegen, ob man nicht zum Skriptstart eine Chrome-Instanz im Hintergrund startet und diese immer wiederverwendet, anstatt sie zu schließen und immer wieder neu zu erstellen.
(natürlich hat man dann die ganze Zeit diese Prozesse am laufen, allerdings ohne Chrome-GUI). Aber keine Ahnung, wie stabil das wäre. Das müsste man mal richtig testen.
Was den Internet Explorer angeht, bin ich allerdings ratlos (in Chrome.ahk werkelt eigentlich auch ein ActiveX-IE-Element als Hilfsmittel - das scheint dann wohl zu funktionieren, aber das hat wahrscheinlich andere Einstellungen als der normale COM-IE)
Edit: Ups, hatte ne falsche Button-ID im Code - nun behoben.
Dann probier doch mal bitte das hier.
([c]WinWait[/c] ist nun raus, da kein sichtbares Window existiert; ein zusätzlicher [c]headless[/c]-Parameter 👻; ein abschließender [c]Kill()[/c]-Befehl, um die Chrome-Instanz nach getaner Arbeit zu schließen).
[code]#NoEnv
SetBatchLines, -1
#Include Chrome.ahk
url := "http://192.168.120.176"
; --- Create a new Chrome instance ---
FileCreateDir, ChromeProfile ; creates a profile subdirectory in current folder
ChromeInst := new Chrome("ChromeProfile", , "--headless")
; --- Connect to the page ---
if !(Page := ChromeInst.GetPage( ) )
{
MsgBox, Could not retrieve page!
ChromeInst.Kill()
}
else
Page.WaitForLoad()
Page.Call("Page.navigate", {"url": url}) ; Navigate to url
Page.WaitForLoad()
Page.Evaluate("document.getElementById('ui_btn_2_1').click()")
sleep 5000
ChromeInst.Kill()
return
Esc::ExitApp[/code]Das [c]sleep 5000[/c] sollte hoffentlich lang genug sein (vermutlich ginge es kürzer), bevor die Chrome-Instanz nach dem Klick geschlossen wird (eine einzige Instanz öffnet immer eine ganze Menge von Prozessen - am besten checkst du mal im Taskmanager, ob die alle zugehen; hier scheint's zu klappen). Jetzt kannst du es natürlich, nach Belieben, in einen Hotkey umwandeln oder mit einem Button verknüpfen.
Viel Erfahrung mit dem [i]headless[/i]-Modus von Chrome hab ich nicht... wenn Tempo wichtig wäre, wäre zu überlegen, ob man nicht zum Skriptstart eine Chrome-Instanz im Hintergrund startet und diese immer wiederverwendet, anstatt sie zu schließen und immer wieder neu zu erstellen. :think: (natürlich hat man dann die ganze Zeit diese Prozesse am laufen, allerdings ohne Chrome-GUI). Aber keine Ahnung, wie stabil das wäre. Das müsste man mal richtig testen.
Was den Internet Explorer angeht, bin ich allerdings ratlos (in Chrome.ahk werkelt eigentlich auch ein ActiveX-IE-Element als Hilfsmittel - das scheint dann wohl zu funktionieren, aber das hat wahrscheinlich andere Einstellungen als der normale COM-IE)
[color=#BF0000]Edit[/color]: Ups, hatte ne falsche Button-ID im Code - nun behoben.