0

使用 ruby​​ selenium-webdirver,我想检查输入元素是否可编辑。为了检查这一点,在 IDE 中,我们使用了 selenium 命令 - verifyEditable。在Ruby中,有什么方法(方法),我们验证元素是否可编辑?

4

2 回答 2

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 错误消息,抱怨该元素不存在。我的偏好是始终使用trueorfalse代替(例如 with verifyEditable),但您可能会发现如果元素不存在(例如 with ),您希望脚本退出并出现错误assertEditable

于 2013-02-06T22:50:07.847 回答
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"

如果该字段被禁用,硒会抱怨(但一些无头驱动程序不会,例如capybara-webkit):

 Selenium::WebDriver::Error::InvalidElementStateError: Element is disabled and so may not be used for actions

但是我不认为使用 selenium 来执行这样的视图测试是一个好主意——它很慢并且可能会不稳定,并且结果可能因驱动程序而异。如果默认情况下在禁用输入的情况下呈现视图,则应该进行视图测试;否则,如果是一些禁用输入的 javascript,它应该是一个简单的jasmine / mocha javascript 测试。

于 2012-11-19T13:24:03.013 回答