Ceci est la suite d'un post fait il y a environ 2 ans pour utiliser le script d'Apple pour basculer entre les réseaux Wi-Fi via la barre de menu :
Big Sur 11.1 : AppleScript pour changer automatiquement de réseau Wi-Fi
Mon script, qui fonctionnait auparavant, renvoie maintenant simplement "valeur manquante" :
tell application "System Events" to click (every menu bar item of menu bar 1 of application process "ControlCenter" whose title starts with "WiFi")
tell application "System Events" to click (every UI element of scroll area of group 1 of window "Control Center" of application process "ControlCenter" whose title starts with "YOUR_SSID_HERE")
Il semble que MacOS Ventura ait gravement endommagé ma solution précédente. Je ne peux même plus utiliser "get properties" pour donner un sens à la hiérarchie des éléments de l'interface utilisateur. Par exemple :
tell application "System Events" to click (every menu bar item of menu bar 1 of application process "Control Center" whose description starts with "WiFi")
delay 3
tell application "System Events" to get properties of UI elements of scroll area 1 of group 1 of window "Control Center" of application process "Control Center"
Résultat :
{{minimum value:missing value, orientation:missing value, position:{2061, 76}, class:UI element, accessibility description:missing value, role description:"heading", focused:missing value, title:missing value, size:{102, 15}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXHeading", value:missing value, subrole:missing value, selected:missing value, name:missing value, description:"heading"}, {minimum value:missing value, orientation:missing value, position:{2052, 95}, class:checkbox, accessibility description:missing value, role description:"toggle button", focused:missing value, title:missing value, size:{288, 32}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXCheckBox", value:0, subrole:"AXToggle", selected:missing value, name:missing value, description:"toggle button"}, {minimum value:missing value, orientation:missing value, position:{2061, 141}, class:UI element, accessibility description:missing value, role description:"heading", focused:missing value, title:missing value, size:{99, 15}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXHeading", value:missing value, subrole:missing value, selected:missing value, name:missing value, description:"heading"}, {minimum value:missing value, orientation:missing value, position:{2052, 160}, class:checkbox, accessibility description:missing value, role description:"toggle button", focused:missing value, title:missing value, size:{288, 32}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXCheckBox", value:0, subrole:"AXToggle", selected:missing value, name:missing value, description:"toggle button"}, {minimum value:missing value, orientation:missing value, position:{2052, 192}, class:checkbox, accessibility description:missing value, role description:"toggle button", focused:missing value, title:missing value, size:{288, 32}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXCheckBox", value:1, subrole:"AXToggle", selected:missing value, name:missing value, description:"toggle button"}, {minimum value:missing value, orientation:missing value, position:{2052, 224}, class:checkbox, accessibility description:missing value, role description:"toggle button", focused:missing value, title:missing value, size:{288, 32}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXCheckBox", value:0, subrole:"AXToggle", selected:missing value, name:missing value, description:"toggle button"}, {minimum value:missing value, orientation:missing value, position:{2052, 267}, class:UI element, accessibility description:missing value, role description:"disclosure triangle", focused:false, title:missing value, size:{288, 22}, help:missing value, entire contents:{}, enabled:true, maximum value:missing value, role:"AXDisclosureTriangle", value:0, subrole:missing value, selected:missing value, name:missing value, description:"disclosure triangle"}}
C'est du charabia total pour moi et cela n'énumère aucun élément clair de l'interface utilisateur avec des attributs de nom ou de description qui pointent vers un SSID Wi-Fi spécifique. Je remarque également une tonne de chaînes de caractères "valeur manquante". À titre de comparaison, en utilisant l'inspecteur d'accessibilité et en cliquant sur le SSID que je souhaite dans la liste des réseaux, je constate qu'il possède les attributs suivants :
<AXApplication: “Control Center”>
<AXWindow: “Control Center”>
<AXGroup>
<AXScrollArea>
<AXCheckBox>
Attributes:
AXParent: “<AXScrollArea>”
AXRoleDescription: “toggle button”
AXChildren: “<array of size 0>”
AXIdentifier: “wifi-network-MYSSID”
AXPath: “Path 0x600003016d90:
”
AXAttributedDescription: “MYSSID, secure network, 3 bars{
AXATextAlignmentValue = 0;
AXFont = {
AXFontFamily = ".AppleSystemUIFont";
AXFontName = ".SFNS-Regular";
AXFontSize = 13;
AXVisibleName = "System Font Regular";
};
AXForegroundColor = <CGColor 0x6000026161c0> [<CGColorSpace 0x600002620ae0> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; Generic RGB Profile)] ( 0 0 0 0.847059 );
}”
AXEnabled: “1”
AXSubrole: “AXToggle”
AXRole: “AXCheckBox”
AXWindow: “<AXWindow: “Control Center”>”
AXValue: “1”
AXChildrenInNavigationOrder: “<array of size 0>”
Actions:
AXPress - press
Je suis vraiment dans le pétrin et j'essaie de travailler sur ce sujet depuis des heures. Je n'arrive pas à trouver quel élément enfant de la "zone de défilement 1" je dois utiliser. Avez-vous une idée ?
Merci.