使用 ruby selenium-webdirver,我想检查输入元素是否可编辑。为了检查这一点,在 IDE 中,我们使用了 selenium 命令 - verifyEditable。在Ruby中,有什么方法(方法),我们验证元素是否可编辑?
2 回答
你试过$driver.find_element(:id, "elementID").enabled?
吗?只要您只检查您知道是输入字段的元素,这就会起作用。
在我的测试中,我只是在托管浏览器控件的同一个类/模块中声明一个方法:
def element_enabled?(how, what)
if $driver.find_element(how, what).displayed? && $driver.find_element(how, what).enabled? then
true
else
false
end
rescue Selenium::WebDriver::Error::NoSuchElementError
false
end
然后你可以使用该方法:
element_enabled?(:id, "elementID")
如果您尝试输入输入的元素当前不可见,则拥有foo.displayed? && foo.enabled?
可以防止您的脚本出现错误。
如果您要求页面上不存在的元素,则包含该rescue
命令只会使方法返回。false
如果您忽略该rescue
块,您的脚本将退出并返回 Selenium 错误消息,抱怨该元素不存在。我的偏好是始终使用true
orfalse
代替(例如 with verifyEditable
),但您可能会发现如果元素不存在(例如 with ),您希望脚本退出并出现错误assertEditable
。
disabled = find('input_id')['disabled']
disabled.should_not == 'disabled'
disabled.should_not == 'true' # just to be safe
或者使用 selenium 驱动程序,您可以继续填写一些值
fill_in 'input_id_or_label', with: "some input value"
如果该字段被禁用,硒会抱怨(但一些无头驱动程序不会,例如capybara-webkit):
Selenium::WebDriver::Error::InvalidElementStateError: Element is disabled and so may not be used for actions
但是我不认为使用 selenium 来执行这样的视图测试是一个好主意——它很慢并且可能会不稳定,并且结果可能因驱动程序而异。如果默认情况下在禁用输入的情况下呈现视图,则应该进行视图测试;否则,如果是一些禁用输入的 javascript,它应该是一个简单的jasmine / mocha javascript 测试。