Wie kann man auf einer Webseite mit PowerShell einen Button anklicken
Hallo Forum.
Wie kann man einen bestimmen Button einer Webseite mit Hilfe von PowerShell anklicken. Aktuell springe ich mit Tabs zu dem Button und drücke dann Enter. Ändert sich die Seite funktioniert diese Methode nicht mehr. Deshalb will ich das Skript umschreiben. Der Buttonname ist bekannt und in der Variable $ButtonName hinterlegt. Kann mir jemand helfen?
Wie kann man einen bestimmen Button einer Webseite mit Hilfe von PowerShell anklicken. Aktuell springe ich mit Tabs zu dem Button und drücke dann Enter. Ändert sich die Seite funktioniert diese Methode nicht mehr. Deshalb will ich das Skript umschreiben. Der Buttonname ist bekannt und in der Variable $ButtonName hinterlegt. Kann mir jemand helfen?
cls
$ButtonName = "Button"
$Url = "https://Test"
start-Process -FilePath msedge -ArgumentList $Url
$count = 0
do {
if($count -eq 30){
break
}
$ps = Get-Process msedge -ErrorAction SilentlyContinue | Where-Object MainWindowTitle -like "*TEST*"
Start-Sleep -Milliseconds 500
$count++
}while($ps.Id -eq $null)
if($ps.Id -ne $null){
$wshell = New-Object -ComObject wscript.shell
while (-not $wshell.AppActivate($ps.Id)) {
Start-Sleep -MilliSeconds 500
}
# === goto button and press the button ===
1..10 | foreach {$wshell.SendKeys('{TAB}')}
$wshell.SendKeys("~")
Start-Sleep -Milliseconds 500
# === write LoginData and press the button===
$wshell.SendKeys("TEXT")
Start-Sleep -Milliseconds 200
$wshell.SendKeys("{TAB}~")
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51914096377
Url: https://administrator.de/forum/wie-kann-man-auf-einer-webseite-mit-powershell-einen-button-anklicken-51914096377.html
Ausgedruckt am: 23.12.2024 um 14:12 Uhr
3 Kommentare
Neuester Kommentar
Das Script muss zunächst die Buttons bzw die TAB-würdigen Stellen auf der Seite zählen, bis der gewünschte Button mit dem Namen erreicht ist. Dann nur noch so oft TAB drücken lassen.
Das ist jedoch eine unschöne Methode. Es kommt nun darauf an was dieser Button auslöst. Wenn es eine GET- oder POST-Methode ist, das kannst du es auch in der Powershell direkt absenden, ohne, dass dafür ein Browser offen sein muss. Du kannst auch einen ganzen Browser simulieren, der Sessions und Cookies verwendet, sich anmeldet und eben auch alles machen kann, was ein Button eben auch macht.
Das ist jedoch eine unschöne Methode. Es kommt nun darauf an was dieser Button auslöst. Wenn es eine GET- oder POST-Methode ist, das kannst du es auch in der Powershell direkt absenden, ohne, dass dafür ein Browser offen sein muss. Du kannst auch einen ganzen Browser simulieren, der Sessions und Cookies verwendet, sich anmeldet und eben auch alles machen kann, was ein Button eben auch macht.
Servus.
lass das mit SendKeys und wshshell, das ist ehrlich gesagt "würg" und unzuverlässig, so etwas macht man heutzutage nicht mehr. Für "echte" objektorientierte Browser-Automation schaust du bitte hier rein, dort findest du auch entsprechende Beispiele:
PowerShell: Einführung in die Webbrowser Automation mit Selenium WebDriver
In der Regel ist Automation über einen Browser auch nur nötig wenn auf der Seite viel JavaScript&Co im Spiel sind, ansonsten lässt sich das meiste auch mit normalen WebRequests erledigen in dem man mit F12 im Browser die von der Webseite durchgeführten POST/GET Requests mittels Invoke-WebRequest & Co nachbaut. Das geht in der Regel wesentlich schneller und zuverlässiger.
Grüße Uwe
lass das mit SendKeys und wshshell, das ist ehrlich gesagt "würg" und unzuverlässig, so etwas macht man heutzutage nicht mehr. Für "echte" objektorientierte Browser-Automation schaust du bitte hier rein, dort findest du auch entsprechende Beispiele:
PowerShell: Einführung in die Webbrowser Automation mit Selenium WebDriver
In der Regel ist Automation über einen Browser auch nur nötig wenn auf der Seite viel JavaScript&Co im Spiel sind, ansonsten lässt sich das meiste auch mit normalen WebRequests erledigen in dem man mit F12 im Browser die von der Webseite durchgeführten POST/GET Requests mittels Invoke-WebRequest & Co nachbaut. Das geht in der Regel wesentlich schneller und zuverlässiger.
Grüße Uwe