অ্যাপলস্ক্রিপ্ট - জিইউআই স্ক্রিপ্টিং এবং সেটিং চেকবক্স, রেডিও বোতাম এবং ক্ষেত্রের মান


2

আমি একটি জিইউআই স্ক্রিপ্টিং অ্যাপলস্ক্রিপ্ট নিয়ে কাজ করছি যা ফাইলমেকার প্রো অ্যাডভান্সড ডকুমেন্টের জন্য, ফাইল মেনুতে গিয়ে ফাইল বিকল্প ডায়ালগ বাক্স নির্বাচন করবে, তারপরে কয়েকটি চেকবক্স / রেডিও বোতাম এবং ক্ষেত্রের মান সেট করবে।

ডায়ালগ বাক্সটি এরকম দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

আমি আমার স্ক্রিপ্টটি নিম্নলিখিতগুলি করতে চাই:

  1. "ব্যবহার করে লগ ইন করুন:" চেকবক্সটি এটি ইতিমধ্যে নির্বাচিত না থাকলে টিক দিন
  2. "অ্যাকাউন্টের নাম এবং পাসওয়ার্ড" রেডিও বোতামটি এটি ইতিমধ্যে নির্বাচিত না থাকলে নির্বাচন করুন
  3. "অ্যাকাউন্ট:" ক্ষেত্রে একটি মান লিখুন
  4. "পাসওয়ার্ড:" ক্ষেত্রে একটি মান লিখুন
  5. ঠিক আছে বোতামটি ক্লিক করুন

আমি এটি ডায়ালগ বাক্সটি খুলতে পেরেছি তবে আমি চেকবক্সটি সেট করে গতটি পেতে সক্ষম নই - জিইউআই স্ক্রিপ্টিং সহ এটি আমার প্রথমবার। আমি ওএস এক্স ইয়োসেমাইট 10.10.3 ব্যবহার করছি।

এখানে আমার স্ক্রিপ্ট:

-- check that GUI Scripting is available

GUIScripting_status()


-- bring FileMaker Pro Advanced to the front

tell application "FileMaker Pro Advanced"
    activate
end tell


setfmFileOptions()

on click_button(app_name, button_name)
    try
        tell application app_name
            activate
        end tell
        tell application "System Events"
            tell process app_name
                click button button_name of front window
            end tell
        end tell
        return true
    on error error_message
    end try
end click_button


on do_menu(app_name, menu_name, menu_item)
    try
        -- bring the target application to the front
        tell application app_name
            activate
        end tell
        tell application "System Events"
            tell process app_name
                tell menu bar 1
                    tell menu bar item menu_name
                        tell menu menu_name
                            click menu item menu_item
                        end tell
                    end tell
                end tell
            end tell
        end tell
        return true
    on error error_message
        return false
    end try
end do_menu


on setfmFileOptions()

    -- choose the Developer Utilities menu item from the Tools menu of FileMaker Pro Advanced

    do_menu("FileMaker Pro Advanced", "File", "File Options...")


    -- click the "Log in using" checkbox:

    if (exists checkbox "Log in using:" of window 1) is true then
 click checkbox "Log in using:" of window 1
 end if


end setfmFileOptions


on GUIScripting_status()
    -- check to see if assistive devices is enabled
    tell application "System Events"
        set UI_enabled to UI elements enabled
    end tell
    if UI_enabled is false then
        tell application "System Preferences"
            activate
            set current pane to pane id "com.apple.preference.universalaccess"
            display dialog "This script utilizes the built-in Graphic User Interface Scripting architecture of Mac OS x which is currently disabled." & return & return & "You can activate GUI Scripting by selecting the checkbox \"Enable access for assistive devices\" in the Universal Access preference pane." with icon 1 buttons {"Cancel"} default button 1
        end tell
    end if
end GUIScripting_status

এটি সঙ্কলন করবে না এবং এই ত্রুটিটি "এই উইন্ডো 1-র" লগ ইন: "উইন্ডো 1 টি ব্যবহার করে চেকবক্স উপস্থিত থাকলে" এই লাইনটি ফিরিয়ে দেবে না:

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


1

এই সামান্য বাক্য গঠন পরিবর্তন চেষ্টা করুন:

on setfmFileOptions(app_name)

    -- choose the Developer Utilities menu item from the Tools menu of FileMaker Pro Advanced

    do_menu(app_name, "File", "File Options...")


    -- click the "Log in using" checkbox:
    tell application "System Events"
        tell process app_name
            repeat until (exists checkbox "Log in using:" of tab group 1 of window 1)
                delay 1
            end repeat
            click checkbox "Log in using:" of tab group 1 of window 1
        end tell
    end tell
end setfmFileOptions

উইন্ডো 1 কী প্রক্রিয়াকরণে রয়েছে তা না জানিয়ে আপনি উইন্ডো 1 ব্যবহার করতে পারবেন না You এখন আপনাকে প্যারামিটার হিসাবে অ্যাপ_নাম নির্দিষ্ট করতে হবে।

সুতরাং, এটি পছন্দ:

setfmFileOptions("FileMaker Pro Advanced")

আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. আমি আপনার পরামর্শ দিয়ে আমার স্ক্রিপ্ট আপডেট করেছি তবে এটি চেকবক্সটি ক্লিক করছে না। এটি লাইনের মতো দেখাচ্ছে: যদি (উইন্ডো 1 এর "লগ ইন" ব্যবহার করে চেকবক্স উপস্থিত থাকে) সত্য হয় তবে তা সনাক্ত করা যাচ্ছে না, কারণ আমি branch শাখার অংশ হিসাবে একটি ডায়ালগ বক্স যুক্ত করেছি এবং এটি ডায়ালগ বক্সটি প্রদর্শন করে না। কোনও ধারণা কেন বা বিকল্প সিনট্যাক্স পরামর্শ?
ব্যবহারকারী982124

আপডেট হওয়া কোডটি ব্যবহার করে দেখুন। আপনি উইন্ডোটি উপস্থিত হওয়ার কথা বলার পরে চেকবক্সটি উপলভ্য হতে একটু সময় নিতে পারে। কখন এটি ক্লিক করতে হবে তা জানতে আপনাকে তার উপস্থিতির জন্য কিছুক্ষণ পরীক্ষা করতে হবে। এই আপডেট করা কোডটি করা উচিত।
উইলিয়াম টি ফ্রগগার্ড

ধন্যবাদ - আমি কয়েক মিনিটের জন্য এটি চালিয়ে রেখেছি কিন্তু এখনও কোনও ফলাফল নেই। এটি উইন্ডোটি "দেখায় না" এর মতো - আমি উইন্ডোটির নামটি তার উইন্ডো শিরোনাম দ্বারা নির্দিষ্ট করার চেষ্টা করেছি কিন্তু এতে কোনও তাত্পর্য হয়নি। অন্য কোন পরামর্শ?
ব্যবহারকারী 982124

1
আপনাকে কী ক্লিক করতে হবে তা নির্ধারণ করার একটি উপায় এই কোডটি ব্যবহার করে: tell application "System Events" to get checkboxes of window 1 of process "FileMaker Pro Advanced"ফিরে আসা চেকবক্সগুলি দেখুন, যদি কোনও, আপনি যা সন্ধান করছেন তা যদি খুঁজে না পান তবে এটি চেষ্টা করুন: tell application "System Events" to get checkboxes of UI elements of window 1 of process "FileMaker Pro Advanced"তারপরে আপনি যতক্ষণ না পেয়ে of UI elementsযান checkboxesততক্ষণ যোগ করে রাখুন আপনি যে চেকবক্সটি সন্ধান করছেন তা এটি ভিউ হায়ারার্কি ক্রল করার একটি সহজ উপায়। যদিও এটি একটি পৃথক স্ক্রিপ্টে করুন।
উইলিয়াম টি ফ্রগগার্ড

যদিও, যদি চেকবক্সটির নাম না দেওয়া হয়, তবে প্রদত্ত চেকবক্সটি আপনি খুঁজছেন কিনা তা নির্ধারণ করতে আপনাকে পরীক্ষা এবং ত্রুটি ব্যবহার করতে হবে। এটি নির্ভর করে কীভাবে বিকাশকারীরা তাদের ইউআই ডিজাইন করে depends
উইলিয়াম টি ফ্রগগার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.