วิธีทราบชื่อขององค์ประกอบ UI โดยใช้ตัวตรวจสอบการเข้าถึง (หรือเครื่องมืออื่น ๆ )


21

ฉันพยายามโต้ตอบกับกล่องโต้ตอบการพิมพ์ผ่าน Applescript

สิ่งที่ฉันต้องการเลียนแบบคือผู้ใช้ตั้งค่าในดรอปดาวน์เฉพาะ

พูดว่าฉันมี:

tell application "System Events"
  tell process "Preview"
    set value of pop up button XXX to YYY
  end tell
end tell

ฉันจะรู้ชื่อ XXX ได้อย่างไร ตัวอย่างเช่นฉันจะแยกแยะความแตกต่างระหว่าง "ดรอปดาวน์" และ "พรีเซ็ต" ได้อย่างไร

ฉันเปิดตัวตรวจสอบการเข้าถึง แต่จากข้อมูลที่แสดงที่นั่นฉันไม่สามารถมองเห็นการอ้างอิงถึงชื่อหรือตัวระบุที่ไม่ซ้ำอื่น ๆ สำหรับดรอปดาวน์ที่ระบุได้

ฉันเคยเห็นคนจำนวนมากใช้ตัวเลขเพื่ออ้างถึงดรอปดาวน์ที่แตกต่างกัน แต่ฉันไม่แน่ใจว่านี่เป็นวิธีปฏิบัติที่ดี จะเกิดอะไรขึ้นถ้า Apple ตัดสินใจเปลี่ยนลำดับของสองดรอปดาวน์ ณ จุดหนึ่ง

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

อัปเดต :

ใช้ 10.6.8 และผู้ตรวจสอบตามที่แนะนำด้านล่างฉันได้รับสิ่งต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันพบว่าUI elementsคำสั่งจากที่นี่มีประโยชน์เช่นกัน: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
phs

นี่คือลิงค์ไปยังหน้าอื่นในAsk Differentที่เชื่อมโยงไปยังหน้าปัจจุบันที่เรียกว่า: AppleScript - ฉันจะรับชื่อองค์ประกอบคุณลักษณะคุณสมบัติคลาสของโปรแกรม UI โดยไม่ต้อง "เดา" ผ่านตัวตรวจสอบการเข้าถึงได้อย่างไร (นี่คือคำถามที่ว่าทำไมฉันต้องการเรียนรู้ข้อเท็จจริงพื้นฐานเกี่ยวกับ "How-to" ... )
clemsam lang

คำตอบ:


15

UPDATE สิ่งนี้จะทำงานใน 10.7.x แต่ 10.6 มีข้อมูลองค์ประกอบอยู่

ปุ่ม (ดร็อปดาวน์) ในแผ่นพิมพ์มีคำอธิบายเพื่ออธิบายฟังก์ชั่น

ในการตรวจสอบการเข้าถึง ; คุณเห็นสิ่งนี้เมื่อวางตัวชี้เมาส์เหนือองค์ประกอบ (ปุ่ม) คุณสามารถล็อค มุมมองของผู้ตรวจสอบการเข้าถึงด้วย cmd + F7

คำอธิบายจะแสดงเป็นAXDescription

ป้อนคำอธิบายรูปภาพที่นี่

ในกรณีสำหรับเครื่องพิมพ์มันคือเครื่องพิมพ์สำหรับค่าที่ตั้งไว้มันเป็นค่าที่ตั้งไว้ล่วงหน้า

หากคุณรู้จักAXDescriptionคุณสามารถหลีกเลี่ยงตัวเลขที่ใช้สิ่งนี้ แต่นี่ไม่ใช่วิธีเดียว เพียงแค่ตัวอย่างเดียว

activate application "Preview"
tell application "System Events"
    tell process "Preview"
        click ((pop up buttons of sheet 1 of window 1) whose description is "Printers")
    end tell
end tell

เพื่อให้การทำงานด้านบนในตัวอย่างนี้ต้องแสดงแผ่นข้อมูลพร้อมกับ 'แสดงรายละเอียด'

ปุ่ม / เลื่อนลงมีเมนู เพื่อให้คุณสามารถเลือกหรือคลิกได้โดยหมายถึงรายการเมนูของเมนูของปุ่ม

โดยใช้หมายเลขหรือใช้หัวเรื่อง / AXTitle

activate application "Preview"
    tell application "System Events"
        tell process "Preview"
            click ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

click menu item "Last Used Settings" of menu of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")
        end tell
    end tell

คุณสามารถย่อรหัสซ้ำได้โดยใช้ตัวแปรสำหรับปุ่มและเรียกมันว่า เมื่อทำมันเหมือนตัวอย่างของฉันด้านล่าง;

   activate application "Preview"
tell application "System Events"
    tell process "Preview"
        set Presets_button to item 1 of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

        click Presets_button
        click menu item "Last Used Settings" of menu of Presets_button
    end tell
end tell

5

ใช้หนึ่งในสคริปต์ที่ลิงก์ในคำใบ้ของ Mac OS X นี้เพื่อค้นหารูปแบบที่อยู่ที่เหมาะสม: การ ค้นหารายการควบคุมและรายการเมนูสำหรับใช้ในการสคริปต์ส่วนต่อประสานผู้ใช้ AppleScript

IIRC คุณจะต้องคลิก (cmd อยู่ใน System Events) ปุ่มเมนูป๊อปอัพก่อนที่คุณจะสามารถเลือกรายการเมนูจากเมนู


4

สำหรับผู้ที่สงสัยว่าดูเหมือนว่าสถานที่แห่งหนึ่งที่จะหาผู้ตรวจสอบการเข้าถึงใน 10.7 คือ:

/Applications/Xcode.app/Contents/Applications


1

ฉันเพิ่งเขียนถึงขั้นตอนการทำงานของฉันสำหรับการเขียนสคริปต์ใน UI AppleScript

ในระยะสั้นองค์ประกอบหลักที่ทำให้สิ่งต่าง ๆ ง่ายขึ้นมากสำหรับฉันคือการเรียนรู้ว่าUI Elementsคำสั่งใน AppleScript ส่งคืนรายการคำศัพท์ที่ AppleScript Editor ต้องการเห็นเพื่อเรียก UI องค์ประกอบ อินเทอร์เฟซนี้กับคำที่เห็นได้จากตัวตรวจสอบการเข้าถึง (ซึ่งมักจะแตกต่างกันเล็กน้อย) เพื่อสร้างสคริปต์การทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.