如何使用ruby计算文本框中的字符数

时间:2012-01-12 17:38:09

标签: ruby-on-rails capybara

我正在用Capybara编写测试套件,我需要在Ruby中测试文本框的长度。它的最大长度为255个字符。达到限制后,您无法再输入。所以我要找的是计算在文本框中输入的字符数,以确保它不超过255个字符。这是在Ruby中完成的(我只是开始学习代码所以对我来说都是新的,任何帮助都会很棒)。

:xpath / html / body / div [4] / div [2] / div [7]

我已经研究了很多,我能找到的所有代码都是如何创建一个文本框并限制字符,但我正在寻找可以测试它是否有效的代码。

我找到的内容有a.countcontent.count,但我无法让它发挥作用。

任何帮助将不胜感激。提前谢谢。

3 个答案:

答案 0 :(得分:1)

Ruby代码可以帮助您生成所需的文本框,但它不会跟踪用户的使用方式 - 至少不能直接使用它。这是浏览器和您编写的用于捕获浏览器事件的javascript的工作。是的,您可以捕获每个按键并使用AJAX将结果发送回服务器,以便您可以在ruby中处理它,但为什么要执行此操作呢?

你可能想要的是一个ruby助手,它可以生成一些html来告诉浏览器将文本框输入限制为一定的数量。

这样的事情,也许是:

<%= text_box 'some_model', 'some_attribute' , :maxlength=>"255" %>

对于text_area,像这样:

<%= text_area 'some_model', 'some_attribute', 
  :onchange => "if (this.value.length > 255){ this.value = this.value.substr(0,255); }" %>

或者更好的是,将javascript放在帮助器.js文件中并使用jQuery等添加它。

<强>已更新

使用您提供的xpath选择器使用RSpec / capybara测试内容长度:

find(:xpath, "/html/body/div[4]/div[2]/div[7]/textbox").value.length.should_be 255

答案 1 :(得分:0)

我正在寻找类似的解决方案,因此我很晚才进入此阶段。我最终提出了:

max_length = first(selector here).value

if max_length.length > 255
    puts 'Limit exceeds 255 characters - error'
else
    puts 'Limit is 255 characters - pass'
    end 
end

这会计算字符并将正确的消息输出到控制台。您可以修改输出到控制台的输出以适合您的测试。

或者您可以使用以下方法简化它:

max_length = first(selector here).value

    expect(max_length.length). to eq 255
end

答案 2 :(得分:0)

这对我有用

    expect(find('#element_id').value.length).to eq(255)