বিদ্যমান জ্ঞানের এখানে যোগ করতে:
জেএস পরীক্ষার জন্য ক্যাপাইবারাকে দুটি থ্রেড রাখতে হবে (একটি আরএসপেকের জন্য, একটি রিলের জন্য) এবং একটি দ্বিতীয় প্রক্রিয়া (ব্রাউজার) সিঙ্কে রাখতে হবে। এটি বেশিরভাগ ম্যাথার এবং নোড সন্ধানের পদ্ধতিগুলিতে অপেক্ষা করে (কনফিগার হওয়া সর্বাধিক অপেক্ষা সময়ের অবধি) এটি করে।
ক্যাপিবারাতে এমন পদ্ধতিও রয়েছে যা প্রাথমিকভাবে অপেক্ষা করে না Node#all
। এগুলি ব্যবহার করা আপনার চশমাগুলি বলার মতো যা আপনি চাইবেন যে তারা মাঝেমধ্যে ব্যর্থ হয়।
গৃহীত উত্তর প্রস্তাব দেয় page.first('selector')
। এটি অনাকাঙ্ক্ষিত, কমপক্ষে জেএস স্পেসের জন্য, কারণ Node#first
ব্যবহারNode#all
।
এটি বলেছিল, Node#first
আপনি যদি ক্যাপিবারাটিকে এমনভাবে কনফিগার করেন তবে অপেক্ষা করবেন :
# rails_helper.rb
Capybara.wait_on_first_by_default = true
এই বিকল্পটি ক্যাপাইবার 2.5.0.0 এ যুক্ত হয়েছিল এবং এটি ডিফল্টরূপে মিথ্যা।
আন্দ্রেই যেমন উল্লেখ করেছেন, আপনার পরিবর্তে এটি ব্যবহার করা উচিত
find('selector', match: :first)
বা আপনার নির্বাচক পরিবর্তন করুন। হয় কনফিগার বা ড্রাইভার নির্বিশেষে ভাল কাজ করবে।
জিনিসগুলিকে আরও জটিল করার জন্য ক্যাপাইবারার পুরানো সংস্করণগুলিতে (বা কোনও কনফিগার বিকল্প সক্ষম করা আছে) #find
আনন্দের সাথে অস্পষ্টতাকে উপেক্ষা করবে এবং কেবল প্রথম ম্যাচিং নির্বাচককে ফিরিয়ে দেবে। এটিও দুর্দান্ত নয়, কারণ এটি আপনার চশমাগুলিকে কম স্পষ্ট করে তোলে, যা আমি কল্পনা করি কারণ আর ডিফল্ট আচরণ নেই। আমি নির্দিষ্ট বিবরণগুলি ছেড়ে দেব কারণ তারা ইতিমধ্যে উপরে আলোচনা করা হয়েছে been
আরও সংস্থানসমূহ: