Атрибуты кадра Watir-Webdriver не совпадают с другими источниками

У меня проблема, когда я возвращаю некоторые атрибуты фрейма, например, они не совпадают с атрибутами в Firebug. Причина в том, что я ищу способ определить назначение фрейма. Например, на www.cnet.com они загружают в общей сложности 19 фреймов, и некоторые из них представляют собой HTML с JavaScript. Я хочу осмотреть некоторые кадры, но не все.

Используя Firebug, я вижу некоторые интересные атрибуты фрейма и хочу отфильтровать фрейм на основе некоторых из этих атрибутов.

У меня есть следующий код Ruby для примера необходимых мне атрибутов:

puts "Tag name: " + frame.attribute_value("tagName")
puts "Local name: " + frame.attribute_value("localName")
puts "Node name: " + frame.attribute_value("nodeName")

Результат выглядит следующим образом:

Tag name: IFRAME
Local name: iframe
Node name: IFRAME

Однако это вывод Firebug для childNodes/Children для страницы www.cnet.com:

введите здесь описание изображения

Если я ссылаюсь на Firebug, первый элемент в списке имеет следующие атрибуты:

Tag name: DIV
Local name: div
Node name: DIV

Кстати, я использую water-webdriver с безголовым под Firefox в Linux.

Любая помощь приветствуется.


person Matt S    schedule 27.10.2013    source источник
comment
Можете ли вы уточнить, в чем проблема? Вы говорите, что watir-webdriver не соответствует Firebug. Но неясно, что возвращает Firebug и как эта разница вызывает реальную проблему в ваших скриптах.   -  person Justin Ko    schedule 28.10.2013


Ответы (1)


Ответ в том, что вы не запрашиваете тот же атрибут, который вам показывает Firefox.

В случае с DIV, который находится вверху вашего списка, если вы хотите, чтобы Watir возвращал «gigya_ruler», вам нужно будет запросить атрибут ID div, а не имя.

То же самое касается фрейма Twitter Hub.

Преобразование всего этого в код Watir будет выглядеть следующим образом:

@b = Watir::Browser.new :ff

div = @b.div(index: 0)
puts div.id # => 'gigya_ruler'

frame = @b.iframe(index: 0)
puts frame.id # => 'twttrHubFrameSecure'
person Abe Heward    schedule 21.02.2014