使用ruby selenium-webdirver,我想检查输入元素是否可编辑。要检查这一点,在IDE中,我们有selenium命令 - verifyEditable。在Ruby中,有什么方法(方法),我们验证元素是否可编辑?
答案 0 :(得分:1)
你试过$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
或false
(与verifyEditable
一样),但如果元素不存在,您可能会发现您希望脚本退出时出错(与assertEditable
)一样。
答案 1 :(得分:0)
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"
如果该字段被禁用,selenium会抱怨(但有些无头司机不会,例如capybara-webkit):
Selenium::WebDriver::Error::InvalidElementStateError: Element is disabled and so may not be used for actions
但是我不认为使用硒进行这样的视图测试是个好主意 - 它很慢并且可能很脆弱,结果可能因驱动程序而异。如果在默认情况下禁用输入的情况下呈现视图,则视图测试应该执行该作业;否则如果它是一些禁用输入的JavaScript,它应该是一个简单的jasmine / mocha javascript测试。