ক্যাপিবায়ার একটি চেকবক্স কীভাবে চেক করবেন?


126

আমি আরএসপেক এবং ক্যাপিবারা ব্যবহার করছি।

আমি কীভাবে একটি চেক করতে একটি পদক্ষেপ লিখতে পারি checkbox? আমি checkমূল্য দিয়ে চেষ্টা করেছি কিন্তু এটি আমার খুঁজে পাচ্ছে নাcheckbox । আমি কী করব তা নিশ্চিত নই, কারণ আমার কাছে বিভিন্ন মান সহ একই আইডি রয়েছে

কোডটি এখানে:

 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">

6
আপনার ইনপুটগুলির একই আইডি থাকা উচিত নয় - তাদের একই নাম থাকা উচিত তবে ভিন্ন আইডি থাকতে হবে।
স্যামস্টেফেন্স

উত্তর:


156

আমি নিম্নলিখিতটি আমার জন্য কাজ করেছেন:

# Check
find(:css, "#cityID[value='62']").set(true)

# Uncheck
find(:css, "#cityID[value='62']").set(false)

1
শুনে খুশি হলাম! সম্ভবত আপনি এই উত্তরটিকে 'স্বীকৃত' হিসাবে চিহ্নিত করেছেন এবং সম্ভবত এটি উপস্থাপন করেছেন ... :)
জন এম

@ জোন এমআইয়ের খালি বন্ধনী সহ কিছু বিজোড় আইডি রয়েছে তাই চেক উদাহরণের জন্য ... find(:css, "#cityID[value='62']").set(true)কাজ find(:css, "#cityID[][value='62']").set(true)করবে তবে পাওয়া যাবে না এবং ব্যর্থ হবে। আমি কীভাবে একটি ফাঁকা বন্ধনী আইডি দিয়ে একই ফাংশনটি চালাব?
টাংগিয়েলড্রিম

1
@ টাঞ্জিবলড্রিম কেবল স্পষ্ট করার জন্য - আপনি কি বলছেন চেকবক্সে '[]] এর আইডি আছে?
জন এম

1
আমি সিএসএস নির্বাচকের সাথে এই কাজটি করার কোনও উপায় খুঁজে পাই না! বর্গাকার বন্ধনী থেকে বাঁচার জন্য অবশ্যই কিছু উপায় থাকতে হবে তবে আমি এটি খুঁজে পেলাম না। আমাকে এক্সপ্যাথ অনুসন্ধানকারীর অবলম্বন করতে হয়েছিল:find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
জন এম

3
আমি কি এই উত্তরটি নিচে চিহ্নিত করতে পারি ... আমি জানি এটি কাজ করে তবে এর সহজ উত্তর এপিয়ার অংশ নয় এমন উত্তর চিহ্নিত করতে এর পাল্টা স্বজ্ঞাত: চেক ('নাম, আইডি বা এখানে পাঠ্য') (নীচের উত্তর দেখুন)
কোড

137

একই আইডি সহ একাধিক উপাদান তৈরি না করাই ভাল , যাতে আপনি মার্জিতগুলির সাথে সহজেই একটি চেকবক্স চেক / আনচেক করতে পারেন

check 'cityID'
uncheck 'cityID'

যদি কেউ একই আইডি সহ একাধিক উপাদান এড়াতে না পারে এবং এখনও নির্দিষ্ট মান সহ একটি চেকবক্স চেক করা প্রয়োজন হয় তবে সে তা করতে পারে

find(:css, "#cityID[value='62']").set(true)
find(:css, "#cityID[value='62']").set(false)

ক্যাপিবারা ইনপুট ম্যানিপুলেশন সম্পর্কিত আরও তথ্য এখানে পাওয়া যাবে


2
একই আইডি সহ একাধিক উপাদান তৈরি না করা আরও ভাল কারণ এটি বৈধ HTML নয়। রেল ব্যবহার করে সঠিকভাবে সাহায্যকারী তৈরি করা হলে এটি কোনও সমস্যা হওয়া উচিত নয়।
ihaztehcodez

1
আমি যুক্ত করতে চাই যে চেকবক্স / আনচেক কেবলমাত্র নিম্নলিখিত মানগুলি গ্রহণ করে: আইডি, নাম বা সম্পর্কিত লেবেল উপাদান। এখানে আপনি এটি সম্পর্কে আরও পড়তে পারেন।
নেশা জোরিক

58

ক্যাপিবারা পরীক্ষা চালানোর সময় আপনি এই বিষয়টি পেয়েছেন page। এটি আপনি যে কোনও চেকবক্স চেক / আনচেক করতে ব্যবহার করতে পারেন। যেমন @ বুরুজায়েমন ইতিমধ্যে উল্লেখ করেছেন:

নাম, আইডি, বা লেবেল পাঠ্যের সাহায্যে একটি চেকবক্স সন্ধান এবং চেক করতে।

সুতরাং ধরে নেওয়া যাক আপনার এইচটিএমএলে আপনি একটি চেকবক্স পেয়েছেন:

<label>  
  <input type="checkbox" value="myvalue" name="myname" id="myid">
  MyLabel
</label>

আপনি এটি দিয়ে পরীক্ষা করতে পারেন:

page.check('myid')
page.check('MyLabel')
page.check('myname')

আনচেক একই ব্যবহারের page.uncheckপদ্ধতি।


1
কঠিন উত্তর, সিএসএস নির্বাচক ব্যবহার করে গৃহীত উত্তরের চেয়ে পরিচ্ছন্ন বলে মনে হচ্ছে (এমনকি যদি চেক পদ্ধতিটি
প্রচ্ছদের

1
হ্যাঁ, এটি সেরা উত্তর। এটি ক্লিনার এবং এটি ব্যবহারকারীর ক্রিয়াকে ঘনিষ্ঠভাবে নকল করে। এটি অতিরিক্ত আইডির সাহায্যে ফর্মটিকে দূষিত করে না এবং এটি পরীক্ষাগুলি পড়তে সহজ করে তোলে।
বি সেভেন

আমি এটা পরিষ্কার। আকর্ষণীয় হলেও, গ্রহণযোগ্য উত্তরটি checkক্যাপিবারায় পদ্ধতিটি কীভাবে প্রয়োগ করা হয় তার থেকে অনেক আলাদা নয় । def check(locator, options={}) find(:checkbox, locator, options).set(true) end
বিগুনটাকান

ধন্যবাদ, এবং ডক্স অনুসারে এটি একই উত্তর: রুবডোক.ইন.ফো / গিথুব / জ্নিক্লাস / ক্যাপাইবারা / মাস্টার / ক্যাপাইবার / নোড / "একটি চেক বাক্স সন্ধান করুন এবং এটি পরীক্ষিত হিসাবে চিহ্নিত করুন The চেক বাক্সটি নামের মাধ্যমে পাওয়া যাবে, আইডি বা লেবেল পাঠ্য। "
মাইক ভাল্লানো

26

আমি মনে করি আপনাকে প্রথমে আপনার ফর্ম উপাদানগুলিকে অনন্য উপহার দিতেid হতে পারে ।

তবে ক্যাপিবারা এবং চেকবাক্সগুলির সাথে ক্যাপিবারা :: নোড :: ক্রিয়াকলাপ # চেক উদাহরণ পদ্ধতি আপনাকে নাম, আইডি, বা লেবেল পাঠ্যের সাহায্যে একটি চেকবক্স সন্ধান এবং চেক করতে দেয়।


10

বাক্সটি যদি পাঠ্যের সাথে সম্পর্কিত হয়, যেমন 'বিকল্প 3', তবে আপনি যেমনটি capybara 3.0.3করতে পারেন তেমন

check 'Option 3'

1
এই প্রতিক্রিয়াটি শীর্ষে হওয়া উচিত, 8 বছরের পুরানো বাক্য গঠন নয়।
sloneorzeszki

প্রকৃতপক্ষে লেখক বর্ণিত দৃশ্যের জন্য, @ সামুয়েল থেকে উত্তরটি সঠিক নিজস্ব
ভিপি।

6

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি নিজেই এটির মাধ্যমে কাজ করে যাচ্ছি এবং উপরোক্ত সকলের চেষ্টা করে শেষ পর্যন্ত আমার পক্ষে এটি কাজ করেছে:

find("input[type='checkbox'][value='#{cityID.id}']").set(true)

আশা করি এটি কারও সহায়ক হবে। আমি ক্যাপিবারা ২.৪.৪ ব্যবহার করছি।



1

আপনি এটি ব্যবহার করতে পারেন: এর পরিবর্তে এক্সপথ: সিএসএস পেতে যদি আপনার কিছু সমস্যা হয় তবে।

সন্ধান করুন:: xpath, '//* ঝাঁঝরা'

ক্রোমে (এবং অবশ্যই অন্যান্য ব্রাউজারগুলি), আপনি "উপাদানটি পরিদর্শন করতে" এবং তারপরে আপনার আগ্রহী উপাদানটিটিতে ডান ক্লিক করে, 'কপি এক্সপথ' রয়েছে যদি আপনি জানেন না যে এক্সপথ কী ছিল, এখন আপনি এটি করুন।


1

আপনি যাচাই করতে পারেন যে সমস্ত চেকবক্সগুলি উদাহরণ হিসাবে পরীক্ষা করা হয়নি।

সমস্ত ('ইনপুট [টাইপ = চেকবক্স]') each চেকবক্স.শালড_নেকে_চেকড শেষ নয়


1

.set (সত্য) আমার পক্ষে কাজ করে নি তাই আমাকে কল করতে হয়েছিল lick ক্লিক করুন:

find(...).click


(১) আমি নিজে থেকে মনে করি না clickএটি একটি বৈধ ক্যাপিবারা কমান্ড (বা এটি যদি কমপক্ষে হয় তবে তা ডক্সে উপস্থিত বলে মনে হয় না), এবং (২) যদি এটি হয় তবে এটি সম্ভবত চেকবক্সটি টগল করবে, এটি চালু বা বন্ধ ছিল তা নিশ্চিত করবেন না
নোটএএনবিবিটার্নার

1

কাস্টম চেকবক্সে কিছু সমস্যা রয়েছে যা লেবেল উপাদানটির পিছনে লুকানো রয়েছে। দরকার ক allow_label_click: true

এই ব্লগ পোস্টে রেফারেন্স সহ ,

check 'checkbox[name]', allow_label_click: true

ধন্যবাদ! এটি একটি বুস্ট্র্যাপ 4 কাস্টম চেকবক্স ক্ষেত্রের সাথে নিখুঁতভাবে কাজ করেছে। এছাড়াও, আপনি যদি এটিটি চেক করতে চান তবে আপনি এটি করতে পারেন: 'চেকবাক্স [নাম]' আনছেক করুন, অনুমতি_লাবেল_ ক্লিক করুন: সত্য
পাস্তুল্লো

0
check find(".whenever input")[:id]

আমি মনে করি এটি ক্যাপিবারা সেই ইনপুটটির সাথে সংযুক্ত যে কোনও ইভেন্ট শ্রোতার জন্য অপেক্ষা করবে, যা কখনও না অপেক্ষা করে যদি ব্যথা করে থাকে তবে .... যদি এই ইনপুটটির কোনও আইডি না থাকে তবে অন্য একটি সম্পত্তি বেছে নিন (অবশ্যই একটি থাকতে হবে) ...


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.