我正在用Capybara编写测试套件,我需要在Ruby中测试文本框的长度。它的最大长度为255个字符。达到限制后,您无法再输入。所以我要找的是计算在文本框中输入的字符数,以确保它不超过255个字符。这是在Ruby中完成的(我只是开始学习代码所以对我来说都是新的,任何帮助都会很棒)。
:xpath / html / body / div [4] / div [2] / div [7]
我已经研究了很多,我能找到的所有代码都是如何创建一个文本框并限制字符,但我正在寻找可以测试它是否有效的代码。
我找到的内容有a.count
或content.count
,但我无法让它发挥作用。
任何帮助将不胜感激。提前谢谢。
答案 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)