الحصول على العناصر التي كتبها سمات
-
07-07-2019 - |
سؤال
سوف تكون قصيرة.
بقدر ما أعرف watir توفر المكتبة طريقتين للحصول على عناصر html.
تقريبا لكل عنصر (شعبة, زر, الجدول, لى, الخ) watir يوفر طريقتين:
.واحد هو 'فريدة' الأسلوب الذي يحصل معين واحد فقط عنصر.على سبيل المثال:
watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)
هذه الأساليب سوف استرداد سوى عنصر واحد.هذا موافق...
.والثاني هو 'الجمع' الطريقة التي سيتم استرداد جميع عناصر watir سبيل المثال
watir_instance.divs
watir_instance.links
watir_instance.buttons
ولكن بقدر ما أعرف watir لا توفر طريقة للحصول على أكثر من عنصر واحد مما ظروف معينة.
على سبيل المثال...إذا كنت تريد فلاش جميع الروابط مع id:my_link_id أنه سيكون من السهل جدا أن تفعل شيئا مثل هذا:
watir_instance.divs(:id, 'my_link_id').each do |link|
link.flash
end
مع hpricot هذه المهمة سهلة جدا...ولكن إذا كان هدفك هو عدم تحليل لم أستطع العثور على Watir الأسلوب الذي يفعل ما أريد.
ونأمل أن تتمكن من فهم لي...
هتافات خوان!!
المحلول
خوان ،
البرنامج النصي الخاص بك لديه عدة مشاكل:
- يقول لك هل تريد فلاش جميع الروابط لكن إذا كنت تستخدم
watir_instance.divs
.ينبغي أن يكونwatir_instance.links
- يمكنك تمرير الحجج
divs
الطريقة:watir_instance.divs(:id, 'my_link_id')
.وينبغي أن يكون مجردwatir_instance.divs
المثال الخاص بك هو أيضا غريب:
أريد فلاش جميع الروابط مع id:my_link_id
بقدر ما أعرف, id يجب أن تكون فريدة من نوعها في الصفحة.
حتى هنا هي أمثلة مختلفة:
1) فلاش جميع الروابط في هذه الصفحة:
require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
link.flash
end
2) فلاش جميع الروابط على هذه الصفحة التي questions
في URL (مكافأة:انتقل الصفحة حتى الرابط الذي هو تومض مرئيا):
require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
if link.href =~ /questions/
link.document.scrollintoview
link.flash
end
end