সেলেনিয়ামের সাথে এক্সটজেএস পরীক্ষার ক্ষেত্রে সবচেয়ে বড় প্রতিবন্ধকতা হ'ল এক্সটজেএস স্ট্যান্ডার্ড এইচটিএমএল উপাদানগুলি সরবরাহ করে না এবং সেলেনিয়াম আইডিই নির্বিকারভাবে (এবং যথাযথভাবে) সুনির্দিষ্ট হিসাবে কাজ করে এমন উপাদানগুলিতে লক্ষ্যযুক্ত কমান্ড তৈরি করবে - অতিরিক্ত ডায়ালিউড উপাদানগুলি যা এক্সপ্লোর পরিচালনা ডেস্কটপের সাহায্যে এক্সট্রজকে সহায়তা করে- চেহারা এবং অনুভূতি। একটি এক্সজেএস অ্যাপের বিরুদ্ধে স্বয়ংক্রিয় সেলেনিয়াম পরীক্ষা লেখার সময় আমি এখানে কয়েকটি টিপস এবং কৌশলগুলি সংগ্রহ করেছি।
সাধারণ টিপস
উপাদানসমূহ সনাক্ত করা হচ্ছে
ফায়ারফক্সে সেলেনিয়াম আইডিই দিয়ে ব্যবহারকারী ক্রিয়া রেকর্ড করে সেলেনিয়াম পরীক্ষার কেসগুলি তৈরি করার সময়, সেলেনিয়াম এইচটিএমএল উপাদানগুলির আইডিতে রেকর্ডকৃত ক্রিয়াকলাপগুলিকে বেস করবে। তবে, বেশিরভাগ ক্লিকযোগ্য উপাদানগুলির জন্য, এক্স্টজেএস "এক্সটেন-জেন -345" এর মতো উত্পন্ন আইডির ব্যবহার করে যা পরবর্তী পৃষ্ঠায় পরবর্তী কোনও সফরে পরিবর্তন হতে পারে এমনকি কোনও কোড পরিবর্তন না করা হলেও। পরীক্ষার জন্য ব্যবহারকারীর ক্রিয়া রেকর্ড করার পরে, উত্পন্ন আইডির উপর নির্ভরশীল এবং তাদের প্রতিস্থাপনের জন্য এই জাতীয় সমস্ত ক্রিয়াগুলির মধ্য দিয়ে যাওয়ার জন্য একটি ম্যানুয়াল প্রচেষ্টা দরকার। দুটি ধরণের প্রতিস্থাপন করা যেতে পারে:
একটি আইডি লোকের পরিবর্তে একটি সিএসএস বা এক্সপথ লোকেটার দিয়ে
সিএসএস লোকেটারগুলি "সিএসএস =" দিয়ে শুরু হয় এবং এক্সপথ লোকেটারগুলি "//" দিয়ে শুরু হয় ("xpath =" উপসর্গটি isচ্ছিক)। সিএসএস লোকেটারগুলি কম ভার্বোস এবং পড়া সহজ এবং এক্সপথ লোকেটারের চেয়ে বেশি পছন্দ করা উচিত। তবে, এমন কিছু ক্ষেত্রে থাকতে পারে যেখানে এক্সপথ লোকেটারগুলি ব্যবহার করা দরকার কারণ কোনও সিএসএস লোকেটর কেবল এটি কাটতে পারে না।
জাভাস্ক্রিপ্ট কার্যকর করা হচ্ছে
কিছু উপাদানগুলিকে এক্সটজেএস দ্বারা পরিচালিত জটিল রেন্ডারিংয়ের কারণে সাধারণ মাউস / কীবোর্ড ইন্টারঅ্যাকশনগুলির চেয়ে বেশি প্রয়োজন। উদাহরণস্বরূপ, একটি এক্সট্রাফর্ম.কোম্ববক্স আসলে কোনও <select>
উপাদান নয় তবে ডকুমেন্ট গাছের নীচে যে কোনও জায়গায় বিচ্ছিন্ন ড্রপ-ডাউন তালিকার একটি পাঠ্য ইনপুট। কম্বোবক্স নির্বাচনটি সঠিকভাবে অনুকরণ করার জন্য, প্রথমে ড্রপ-ডাউন তীরের উপর ক্লিক ক্লিক করে তারপরে প্রদর্শিত তালিকাতে ক্লিক করা সম্ভব। যাইহোক, সিএসএস বা এক্সপথ লোকেটারগুলির মাধ্যমে এই উপাদানগুলি সনাক্ত করা জটিল হতে পারে। বিকল্পটি হ'ল কমোবক্স উপাদানটি নিজেই সনাক্ত করা এবং নির্বাচনের অনুকরণ করার জন্য এটিতে পদ্ধতিগুলি কল করা:
var combo = Ext.getCmp('genderComboBox');
combo.setValue('female');
combo.fireEvent('select');
সেলেনিয়ামে runScript
কমান্ডটি আরও সংক্ষিপ্ত আকারে উপরের ক্রিয়াকলাপটি সম্পাদন করতে ব্যবহার করা যেতে পারে:
with (Ext.getCmp('genderComboBox')) { setValue('female'); fireEvent('select'); }
এজেএক্স এবং স্লো রেন্ডারিংয়ের সাথে মোকাবিলা করা
কোনও ব্যবহারকারী অ্যাকশন পৃষ্ঠার স্থানান্তর বা পুনরায় লোডের ফলশ্রুতিতে ফলাফলের জন্য পৃষ্ঠা লোডের জন্য অপেক্ষা করার জন্য সমস্ত কমান্ডের জন্য সেলেনিয়ামের "* অ্যান্ডওয়াইট" স্বাদ রয়েছে। তবে, যেহেতু এএএএক্সএক্স সংগ্রহগুলি প্রকৃত পৃষ্ঠার বোঝা জড়িত না, তাই এই আদেশগুলি সিঙ্ক্রোনাইজেশনের জন্য ব্যবহার করা যাবে না। সমাধানটি হল এজেএক্স প্রগতি সূচকের উপস্থিতি / অনুপস্থিতি বা গ্রিডে সারিগুলির উপস্থিতি, অতিরিক্ত উপাদান, লিঙ্ক ইত্যাদির মতো ভিজ্যুয়াল ক্লুগুলি ব্যবহার করা উদাহরণস্বরূপ:
Command: waitForElementNotPresent
Target: css=div:contains('Loading...')
কখনও কখনও কোনও উপাদান কোনও নির্দিষ্ট সময়ের পরে উপস্থিত হয়, নির্ভর করে একজন ব্যবহারকারী ক্রিয়াকলাপের পরে দৃশ্যের পরিবর্তনের ফলে এক্সটজেএস কীভাবে উপাদানগুলি সরবরাহ করে on pause
কমান্ডটি দিয়ে সালিশি বিলম্বের পরিবর্তে , আদর্শ পদ্ধতি হ'ল আগ্রহের উপাদানটি আমাদের উপলব্ধি না হওয়া পর্যন্ত অপেক্ষা করা উচিত। উদাহরণস্বরূপ, কোনও আইটেম উপস্থিত হওয়ার জন্য অপেক্ষা করার পরে এটি ক্লিক করতে:
Command: waitForElementPresent
Target: css=span:contains('Do the funky thing')
Command: click
Target: css=span:contains('Do the funky thing')
বিভিন্ন ব্রাউজারে বা বিভিন্ন মেশিনে পরীক্ষা চালানোর ফলে সময়ের পার্থক্যের কারণে নির্বিচার বিরতিগুলির উপর নির্ভর করা ভাল ধারণা নয় কারণ পরীক্ষার কেসগুলি দুর্বল করে তুলবে।
অ-ক্লিকযোগ্য আইটেম
click
কমান্ড দ্বারা কিছু উপাদান ট্রিগার করা যায় না । এর কারণ ইভেন্ট শ্রোতা আসলে ধারক স্থানে থাকে এবং তার শিশু উপাদানগুলির উপর মাউস ইভেন্টগুলি পর্যবেক্ষণ করে, যা শেষ পর্যন্ত পিতামাতার কাছে বুদবুদ হয়। ট্যাব নিয়ন্ত্রণ একটি উদাহরণ। একটি ট্যাবে ক্লিক করতে, আপনাকে mouseDown
ট্যাব লেবেলে একটি ইভেন্টের অনুকরণ করতে হবে :
Command: mouseDownAt
Target: css=.x-tab-strip-text:contains('Options')
Value: 0,0
ক্ষেত্র বৈধকরণ
validationDelay
ব্যবহারকারীর পাঠ্য প্রবেশ করানোর পরে বা ক্ষেত্রটি হারিয়ে যাওয়ার সাথে সাথেই ফর্ম ক্ষেত্রগুলি (Ext.for। * উপাদান) যাচাইকরণের জন্য নিয়মিত প্রকাশ বা vtyype সম্পর্কিত একটি নির্দিষ্ট বিলম্বের সাথে বৈধতা ( ডিফল্টরূপে 250 মিমি সেট করা সম্পত্তি দেখুন ) প্রবর্তন করবে ফোকাস - বা অস্পষ্টতা ( validateOnDelay
সম্পত্তি দেখুন)। ক্ষেত্রের ভিতরে কিছু পাঠ্য সন্নিবেশ করানোর জন্য টাইপ সেলেনিয়াম কমান্ড জারির পরে ক্ষেত্রের বৈধতা যাচাই করার জন্য আপনাকে নিম্নলিখিতগুলির মধ্যে দুটি করতে হবে:
বিলম্বিত বৈধতা ট্রিগার করা
ক্ষেত্রটি কীপ ইভেন্টগুলি গ্রহণ করে যখন এক্সটجيএস বৈধতা বিলম্ব টাইমার বন্ধ করে দেয়। এই টাইমারটি ট্রিগার করতে, কেবল একটি ডামি কীআপ ইভেন্টটি ইস্যু করুন (আপনি কী কী কী কী কী এক্সটজএস এড়িয়ে চলেছেন তা ব্যবহার করে না), তারপরে একটি সংক্ষিপ্ত বিরতি দেওয়া যা বৈধতার চেয়ে বেশি দীর্ঘ:
Command: keyUp
Target: someTextArea
Value: x
Command: pause
Target: 500
তাত্ক্ষণিক বৈধতা ট্রিগার
তাত্ক্ষণিক বৈধতা ট্রিগার করতে আপনি ক্ষেত্রে একটি অস্পষ্ট ইভেন্ট ইনজেক্ট করতে পারেন:
Command: runScript
Target: someComponent.nameTextField.fireEvent("blur")
বৈধকরণের ফলাফলগুলি পরীক্ষা করা হচ্ছে
বৈধতা অনুসরণ করে, আপনি একটি ত্রুটি ক্ষেত্রের উপস্থিতি বা অনুপস্থিতি পরীক্ষা করতে পারেন:
Command: verifyElementNotPresent
Target: //*[@id="nameTextField"]/../*[@class="x-form-invalid-msg" and not(contains(@style, "display: none"))]
Command: verifyElementPresent
Target: //*[@id="nameTextField"]/../*[@class="x-form-invalid-msg" and not(contains(@style, "display: none"))]
নোট করুন যে "প্রদর্শন: কিছুই নয়" চেক প্রয়োজনীয় কারণ একবার ত্রুটি ক্ষেত্র প্রদর্শিত হয় এবং তারপরে এটি আড়াল করা দরকার, এক্সটجیএস সম্পূর্ণরূপে ডিওএম ট্রি থেকে অপসারণের পরিবর্তে ত্রুটি ক্ষেত্রটি লুকিয়ে রাখবে।
এলিমেন্ট নির্দিষ্ট টিপস
একটি Ext.for.Button ক্লিক করুন
বিকল্প 1
আদেশ: টার্গেট: সিএসএস = বোতামটি ক্লিক করুন: ('সংরক্ষণ করুন')
বোতামটি এর ক্যাপশন দ্বারা নির্বাচন করে
বিকল্প 2
কমান্ড: টার্গেট: সিএসএস = # সেভ-অপশন বোতামে ক্লিক করুন
বোতামটি তার আইডি দ্বারা নির্বাচন করে
একটি Ext.for.ComboBox থেকে একটি মান নির্বাচন করা
Command: runScript
Target: with (Ext.getCmp('genderComboBox')) { setValue('female'); fireEvent('select'); }
প্রথমে মান নির্ধারণ করে এবং তারপর পর্যবেক্ষকদের ক্ষেত্রে নির্বাচিত ইভেন্টটিকে স্পষ্টভাবে আগুন ধরিয়ে দেয়।