سؤال

سوف تكون قصيرة.

بقدر ما أعرف 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top