2015-06-22 2 views
1

У меня есть продолжительность:Получить текущее значение булева атрибута

<span disabled="disabled">Edit Member</span> 

Когда я пытаюсь получить значение атрибута disabled:

page.in_iframe(:id => 'MembersAreaFrame') do |frame| 
    expect(page.span_element(:xpath => "//span[text()='Edit Member']", :frame => frame).attribute('disabled')).to eq("disabled") 
end 

я получаю:

expected: "disabled" 
    got: "true" 

Как получить значение указанного атрибута вместо булевского значения?

+0

'.... attribute ('disabled'). Value'. – mudasobwa

+0

получил 'undefined method 'значение' для" true ": String' error –

ответ

0

Метод attribute объекта gem не выполняет никакого форматирования значения атрибута. Он просто возвращает то, что возвращается от Selenium-WebDriver (или Watir-Webdriver).

В случае логических атрибутов это означает, что возвращается истина или ложь. Из Selenium-WebDriver#attribute документации:

Следующие считаются «логические» атрибутами, и будет возвращать либо «истина» или «ложь»:

асинхронные, автофокус, автозапуск, проверил, компактный, полный , элементы управление, заявляют, defaultchecked, defaultselected, отложить, инвалиды, перетаскиваемое, закончился, formnovalidate, скрытый, неопределенный, iscontenteditable, ISMAP, itemscope, петля, несколько приглушен, nohref, NORESIZE, noshade, NOVALIDATE, Nowrap, открытым , приостановлено, публичный, только для чтения, перевернутый, скошенный, с eamless, поиск, выбран, проверка орфографии, truespeed, willvalidate

Как вы можете видеть, атрибут «отключен» включен в этот список, и, таким образом, возвращает логическое значение.

Если вы действительно хотите проверить фактическое значение атрибута, вам придется проанализировать HTML. Если HTML не является простым, я бы предложил использовать Nokogiri (или другой парсер HTML), а не писать свои собственные. В Нокигири:

require 'nokogiri' 

# Get the HTML of the span 
span_html = page.in_iframe(:id => 'MembersAreaFrame') do |frame| 
    page.span_element(:xpath => "//span[text()='Edit Member']", :frame => frame).html 
end 

# Parse the span 
doc = Nokogiri::HTML.fragment(span_html) 
root_element = doc.at_css('*') 

# Check the disabled attribute of the root element (ie the span) 
expect(root_element['disabled']).to eq("disabled") 
Смежные вопросы