Ruby等效调用verifyEditable selenium命令

时间:2012-11-19 12:52:40

标签: ruby selenium-webdriver

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

2 个答案:

答案 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错误消息,抱怨该元素不存在。我的偏好是始终获得truefalse(与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测试。