আমি আরএসপেক 2 এবং ক্যাপিবারা গ্রহণযোগ্যতা পরীক্ষার জন্য ব্যবহার করছি।
আমি দৃsert়ভাবে বলতে চাই যে লিংকটি ক্যাপিবারাতে অক্ষম আছে বা না। কিভাবে আমি এটি করতে পারব?
উত্তর:
আপনি কীভাবে লিঙ্কটি অক্ষম করছেন? এটি কি ক্লাস যুক্ত করছে? একটি গুণ?
# Check for a link that has a "disabled" class:
page.should have_css("a.my_link.disabled")
page.should have_xpath("//a[@class='disabled']")
# Check for a link that has a "disabled" attribute:
page.should have_css("a.my_link[disabled]")
page.should have_xpath("//a[@class='disabled' and @disabled='disabled']")
# Check that the element is visible
find("a.my_link").should be_visible
find(:xpath, "//a[@class='disabled']").should be_visible
প্রকৃত xpath নির্বাচকগুলি ভুল হতে পারে। আমি প্রায়শই এক্সপথ ব্যবহার করি না!
আর একটি সহজ সমাধান হ'ল এইচটিএমএল বৈশিষ্ট্যটি যা আপনি অনুসন্ধান করছেন তা অ্যাক্সেস করা []
:
find('#my_element')['class']
# => "highlighted clearfix some_other_css_class"
find('a#my_element')['href']
# => "http://example.com
# or in general, find any attribute, even if it does not exist
find('a#my_element')['no_such_attribute']
# => ""
দ্রষ্টব্য যে Capybara
স্বয়ংক্রিয়ভাবে অ্যাসিনক্রোনাস অনুরোধগুলি শেষ হওয়ার জন্য অপেক্ষা করার চেষ্টা করবে, তবে এটি কিছু ক্ষেত্রে কার্যকর নাও হতে পারে:
অ্যাসিঙ্ক্রোনালি আপডেট হওয়া উপাদানগুলির উপর দৃser়তার সাথে যদি আপনার সমস্যা হয় তবে এখানে একটি কার্যকারিতা রয়েছে:
find('a#my_element[href]')
, এই বৈশিষ্ট্যের মানটি পাওয়া কি সম্ভব? মত প্রকাশের সাথে চেষ্টা করা find('a#my_element[href]').value
কিন্তু কাজ করছে বলে মনে হচ্ছে না :(
find('a#my_element[href]').text
বা find('a#my_element[href]').native
। এর মধ্যে যে কোনও একটি আপনি প্রত্যাশিত ফলাফল দিলে আমাকে জানান।
সঠিক
এক্সপথটি খুঁজে পেতে এটি কিছুটা অগোছালো ছিল, এখানে ক্যাপিবারা ব্যবহার করে 0.4.1.1
# <a href="https://stackoverflow.com/clowns?ordered_by=clumsyness" class="weep">View Clowns</a>
page.should have_xpath("//a[@class='weep'][@href='/clowns?ordered_by=clumsyness']", :text => "View Clowns")
আপনার যদি ক্লাস ছাড়াই কেবল একটি লিঙ্ক থাকে তবে ব্যবহার করুন
page.should have_link('View Clowns', :href => '/clowns?ordered_by=clumsyness')
দুঃখের সাথে এরকম কিছু কাজ করবে না:
page.should have_link('This will not work!', :href => '/clowns?ordered_by=clumsyness', :class => "weep")
শ্রেণীর বিকল্পটি উপেক্ষা করা হবে।
আমি দুটি পৃথক দৃ using় ব্যবহার have_link
এবং ব্যবহারের পরামর্শ দিচ্ছি find_link(name)[:disabled]
। একমাত্র দ্বিতীয় দাবী সম্পাদন করা সহজতর, এটি নিখোঁজ লিঙ্কগুলি সম্পর্কে ত্রুটি বার্তাগুলিকে আরও সুন্দর দেখায়, আপনার পরীক্ষার ফলাফলগুলি পড়া সহজ করে তোলে।
expect(page).to have_link "Example"
expect(find_link("Example")[:disabled]).to be false
নোট যে "Example"
লিঙ্কটির নাম বা আইডি পরিবর্তন করা যেতে পারে।
page.should have_link('It will work this way!', {:href => '/clowns?ordered_by=clumsyness', :class => "smile"})
have_link অপশনগুলির একটি হ্যাশ প্রত্যাশা করে যা আপনি কোনও সরবরাহ না করলে খালি। লিঙ্কের যে কোনও বৈশিষ্ট্য থাকতে হবে তা আপনি নির্দিষ্ট করতে পারেন - কেবলমাত্র নিশ্চিত করুন যে আপনি ওয়ান হ্যাশের সমস্ত বিকল্প পাস করেছেন।
আশাকরি এটা সাহায্য করবে
পিএস: ডেটা-মেথডের মতো অ্যাট্রিবিউটের জন্য আপনাকে হাইফেনের প্রতীকটি ভেঙে দেওয়ার কারণে আপনাকে গুণকের নামটি স্ট্রিং হিসাবে পাস করতে হবে।
class:
বৈধ নয়
যখনই সম্ভব, আপনার ক্যাপিবারার সরবরাহিত মোড়ক ব্যবহার করার চেষ্টা করা উচিত যা চালকদের জুড়ে আরও ধারাবাহিকভাবে কাজ করবে।
বিশেষ ক্ষেত্রে disabled
, ২.১-তে একটি মোড়ক চালু করা হয়েছিল: https://github.com/jnicklas/capybara/blob/fc56557a5463b9d944207f2efa401faa5b49d9ef/History.md#version-210
আপনি যদি এটি ব্যবহার করেন তবে আপনি র্যাকটেষ্ট এবং পলটারজিস্ট উভয়েরই বুদ্ধিমান ফলাফল পাবেন:
এইচটিএমএল:
<input type="text" id="disabled-false" ></div>
<input type="text" id="disabled-true" disabled></div>
<input type="text" id="disabled-js-true" ></div>
<input type="text" id="disabled-js-false" disabled></div>
<script>
document.getElementById('disabled-js-true').disabled = true
document.getElementById('disabled-js-false').disabled = false
</script>
পরীক্ষা:
!all(:field, 'disabled-false', disabled: false).empty? or raise
all(:field, 'disabled-false', disabled: true ).empty? or raise
all(:field, 'disabled-true', disabled: false).empty? or raise
!all(:field, 'disabled-true', disabled: true ).empty? or raise
all(:field, 'disabled-js-true', disabled: true ).empty? or raise
all(:field, 'disabled-js-false', disabled: false).empty? or raise
Capybara.current_driver = :poltergeist
!all(:field, 'disabled-false', disabled: false).empty? or raise
all(:field, 'disabled-false', disabled: true ).empty? or raise
all(:field, 'disabled-true', disabled: false).empty? or raise
!all(:field, 'disabled-true', disabled: true ).empty? or raise
!all(:field, 'disabled-js-true', disabled: true ).empty? or raise
!all(:field, 'disabled-js-false', disabled: false).empty? or raise
সিএসএস নির্বাচকদের পরিবর্তে এটি কীভাবে ব্যবহার করে জাভাস্ক্রিপ্ট পরীক্ষাগুলি কোনও পরিবর্তন ছাড়াই কাজ করবে যদি আপনি কোনও জেএস সক্ষম ড্রাইভার ব্যবহার শুরু করেন তবে নোট করুন।
এখানে চলমান পরীক্ষার ফাইল ।
ধনুক , একটি ইঙ্গিত জন্য ধন্যবাদ
আর একটি সহজ সমাধান হ'ল আপনি যে এইচটিএমএল বৈশিষ্ট্যটি অনুসন্ধান করছেন তার অ্যাক্সেস করা []
এখানে একটি উদাহরণ:
let(:action_items) { page.find('div.action_items') }
it "action items displayed as buttons" do
action_items.all(:css, 'a').each do |ai|
expect(ai[:class]).to match(/btn/)
end
end
আরএসপেক 3 এর সিনট্যাক্স ব্যবহার করে আমি এটি এটি করেছি:
expect(page).not_to have_selector(:link_or_button, 'Click here')