Page-Object gem 的attribute
方法不对属性值进行任何格式化。它只是返回从 Selenium-WebDriver(或 Watir-Webdriver)返回的内容。
在布尔属性的情况下,这意味着将返回 true 或 false。从Selenium-WebDriver#attribute文档:
以下被视为“布尔”属性,将返回“真”或“假”:
异步,自动对焦,自动播放,检查,紧凑,完整,控件,声明,defaultchecked,defaultselected,延迟,禁用,可拖动,结束,formnovalidate,隐藏,不确定,iscontenteditable,ismap,itemscope,循环,多个,静音,nohref,noresize, noshade、novalidate、nowrap、打开、暂停、发布日期、只读、必需、反转、范围、无缝、搜索、选择、拼写检查、truespeed、willvalidate
如您所见,“禁用”属性包含在此列表中,因此返回一个布尔值。
如果你真的想检查实际的属性值,你将不得不解析 HTML。除非 HTML 很简单,否则我建议使用 Nokogiri(或其他 HTML 解析器)而不是自己编写。在 Nokogiri:
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")