How to automate scheduling my coronavirus vaccine shot appointment?

I live in Germany and want to automate checking for available Covid jab slots at my local vaccination center on the vaccine-appointment website https://www.impfterminservice.de/impftermine - Typically they are all booked out, but every few days new slots are made available.

Recording the process works, but the replay gets stuck at the “Bundesland” and “Impfzentrum” and select boxes. It seems these are no normal select boxes? How to automate them?

# Buchen Sie die Termine für Ihre Corona-Schutzimpfung 116117.app

Wählen Sie das Impfzentrum in Ihrer Umgebung und buchen Sie Ihre beiden Impftermine.

Bundesland

Bitte auswählen

Impfzentrum

Interesting question. Indeed, the website uses non-custom select boxes/dropdowns. So the task is similar to Kwfinder.com dropdown selection - #2 by TechSupport

Observations:

(1) Find select element: Use good XPath => Here a good and stable XPath is an XPath that does not contain the changing ID:

image

(2) CLICK opens the dropdown, but then it not ready for keyboard ENTER. => So we must use XClick to open the dropdown. Then use one or more KEY_DOWN to make the selection.

(3) We use visualSearch to check if the “Es wurden keine freien Termine in Ihrer Region gefunden. Bitte probieren Sie es später erneut.” warning appears. If yes, then no slot is available.

Macro running:

Complete macro:

{
  "Name": "wait-for-slot",
  "CreationDate": "2021-4-7",
  "Commands": [
    {
      "Command": "open",
      "Target": "https://www.impfterminservice.de/impftermine",
      "Value": ""
    },
    {
      "Command": "XClick",
      "Target": "xpath=//span[2]/span/span/span",
      "Value": ""
    },
    {
      "Command": "XType",
      "Target": "${KEY_ENTER}",
      "Value": ""
    },
    {
      "Command": "XClick",
      "Target": "xpath=//div[2]/label/span[2]/span/span/span",
      "Value": ""
    },
    {
      "Command": "XType",
      "Target": "${KEY_ENTER}",
      "Value": ""
    },
    {
      "Command": "clickAndWait",
      "Target": "xpath=/html/body/app-root/div/app-page-its-center/div/div[2]/div/div/div/div/form/div[4]/button",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "xpath=/html/body/app-root/div/app-page-its-login/div/div/div[2]/app-its-login-user/div/div/app-corona-vaccination/div[2]/div/div/label[2]/span",
      "Value": ""
    },
    {
      "Command": "visualSearch",
      "Target": "keineTermine2_dpi_168.png@0.90",
      "Value": "no_slot_message"
    },
    {
      "Command": "if_v2",
      "Target": "${no_slot_message} == 0",
      "Value": ""
    },
    {
      "Command": "echo",
      "Target": "Yes, book now",
      "Value": "green"
    },
    {
      "Command": "else",
      "Target": "",
      "Value": ""
    },
    {
      "Command": "echo",
      "Target": "Please wait and try again later",
      "Value": "blue"
    },
    {
      "Command": "end",
      "Target": "",
      "Value": ""
    }
  ]
}

PS: UIvision RPA software is used by UK NHS vaccination sites to speed up the vaccination process. And now it is also used to make vaccination appointments faster :wink: