كيف يمكنني أن أرى ما وجدته Capybara في خطوة خيار فاشلة؟
-
19-09-2019 - |
سؤال
بدأت الترحيل من الخيار + Webrat إلى الخيار + Capybara. الآن يبدو أن سلوك "يجب أن أرى" يختلف إلى حد ما. معظم هذه فشل الآن، على الرغم من أنني لم أغير أي شيء على الصفحة. لقد استبدلت المقتطف الذي يجب العثور عليه مع بعض الأشياء الموجودة في كل صفحة وبعض النصوص التي يعمل بها ونص آخر لا. لا يمكنني العثور على أي نمط في ما هو موجود في محتوى الصفحة وما ليس كذلك. تستخدم Webrat طباعة ما هو محتوى الصفحة هو أنه وجد، في حالة عدم احتواء العبارة المطلوبة. هل هناك على أي حال للحصول على Capybara تظهر النص الذي حصلت عليه من الصفحة التي حاولت العثور على النص؟
المحلول
حاول إضافة هذه الخطوة:
Then show me the page
نصائح أخرى
Then show me the page
يدعو Webrat / Capybara الأساسي save_and_open_page
طريقة. وجدت أن مفيدة عند العمل مع شريحة لحم.
إذا كنت ترغب في فتح المتصفح الصفحة عند فشل الصفحة في استخدام جوهرة "إطلاق". أضفها إلى ملف GEM الخاص بك، ثم في / ميزات / دعم إنشاء ملف يسمى Debugging.rb مع المحتويات:
After do |scenario|
save_and_open_page if scenario.failed?
end
إذا كنت تستخدم JavaScript أو Ajax في صفحاتك وتريد أن نرى ما يحدث، فقد وجدت أن برنامج تشغيل السيبري جيد جدا في السماح لك بالدخول في دوم ومعرفة ما يحدث.
إذا قمت بإعداد برنامج تشغيل Capybara الخاص بك مع خيار تصحيح الأخطاء عن بعد:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, inspector: true)
end
يمكنك بعد ذلك وضع السطر التالي في خطواتك:
page.driver.debug
الذي ينطلق مستعرض كروم جديد مع مجموعة DOM State الحالية، مما يتيح لك الحصول على وحدة التحكم. (على الإصدار الخاص بي من Linux، اضطررت إلى Symlink Chromium إلى متصفح Chromium ولكنه يعمل بشكل جيد).
معلومات المصدر: http://jonathanleighton.com/articles2/poltergeist-0-6-0/
Then show me the response
لم تنجح من أجلي الخيار 1.1. لقد وجدت مفيدا لكتابة خطوة باستخدام أمر Capybara:
print page.html
هذا يخرج الحالة الحالية لدوم
يمكنك أيضا استخدام "ثم أرني الاستجابة" التي تخرج HTML إلى وحدة التحكم إذا كنت لا ترغب في استخدام المستعرض.
يمكنك دائما إجراء تسديدة لشاشة عندما فشل شيء ما. أنا تصحيح الكثير من الميزات الفاشلة بهذه الطريقة.