ฉันจะคลิกปุ่มในหน้าต่างแอปพลิเคชันด้วย AppleScript โดยอัตโนมัติได้อย่างไร


7

สมมติว่าฉันต้องการคลิกปุ่มที่ปรากฏที่ไหนซักแห่งในหน้าต่างโดยใช้ AppleScript click button ใช้งานได้ แต่คุณต้องรู้ว่าคุณต้องการกดปุ่มใด


ตัวอย่างเช่น: การสแกนนั้นค่อนข้างยุ่งยากเมื่อคุณต้องรอให้เครื่องสแกนเสร็จสิ้นจากนั้นสลับไปที่ Image Capture.app จากนั้นคลิก การสแกน อีกครั้ง

ดังนั้นฉันต้องการกดปุ่มนี้โดยอัตโนมัติที่นี่ ...

enter image description here

ฉันคิดว่ามันจะค่อนข้างง่าย แต่ในตอนแรกฉันก็ทำได้:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of window "Image Capture"
    end tell
end tell

แน่นอนว่าปุ่มนั้นฝังลึกกว่านั้น (เช่นใน Split Group บางกลุ่ม)

กับ ผู้ตรวจสอบการเข้าถึง ฉันสามารถดูว่ามันอยู่ที่ไหน แต่ฉันต้องลงไปที่โครงสร้างองค์ประกอบ UI เพื่อหาปุ่มหรือไม่? มีทางลัดไหม? ถ้าไม่ฉันกำลังคิดถึงอะไร click button "Scan" of window "Image Capture"?

enter image description here

ทั่วไปมากขึ้น: ฉันจะหาปุ่มในลำดับชั้นองค์ประกอบ UI ได้จากที่ใด


เฮ้ชายคำถามคล้าย ๆ กันที่นี่ & gt; superuser.com/q/1172526/234141 คุณช่วยได้ไหม
abbood

คำตอบ:


9

หากปุ่มไม่สามารถใช้งานได้โดยตรงคุณอาจต้องเดา

สิ่งที่ใช้ได้ใน High Sierra คือ:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell

สำหรับ MacOS รุ่นเก่า group 1 อาจจะต้องมีการใช้

วิธีแก้ปัญหาอื่นคือเปิดใช้งานหน้าต่างแล้วกด space bar:

tell application "Image Capture"
    activate
    tell application "System Events" to key code 49
end tell

คุณสามารถลองใช้งานได้โดยใช้คำสั่งเช่น:

UI elements of window 1
UI elements of splitter group 1 of window 1
UI elements of group 1 of splitter group 1 of window 1

หรือตามที่ @Lri กล่าวในความคิดเห็น

properties of UI elements of window 1
properties of UI elements of UI elements of window 1

สิ่งนี้จะนำเสนอรายการองค์ประกอบที่มีให้คุณและคุณสามารถเดาเส้นทางของคุณได้


2
เบราว์เซอร์ UI ยังแสดงดัชนีจำนวนเต็มที่ใช้โดยเหตุการณ์ระบบและสามารถแสดงองค์ประกอบ UI ทั้งหมดของแอปในมุมมองคอลัมน์ แม้ว่ามันจะเป็น $ 55 ▪วิธีที่เร็วกว่าในการ จำกัด องค์ประกอบให้แคบลงด้วยตนเอง: properties of UI elements of UI elements of window 1
Lri

1

ใน MacOS High Sierra 10.13.6 และ Image Capture 7.0 คำตอบข้างต้นใช้ได้กับการดัดแปลงเล็กน้อย:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell

ขอบคุณที่รู้ คุณอาจจะแนะนำการแก้ไขคำตอบของฉันด้วย ฉันแก้ไขโพสต์ของฉัน
slhck

0

สิ่งนี้ได้ผลสำหรับฉัน:

entire contents of window 1

เมื่อสิ่งนี้สั้นลง:

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