Capybara是Rack应用程序的Web应用程序测试框架,例如Rails,Sinatra和Merb。
如何使用 Rspec、Capybara 和 Chromedriver 为模态设置系统测试
我是新手,据我目前的理解,你不能将 javascript 与 Rspec 测试混合在一起(?)。 对于我的第一个 Rspec/Capybara 系统测试,我希望用户登录,然后单击模式...
如何使用 RSpec 系统测试 Active Storage 映像?
我正在编写 RSpec 系统规范来测试 Active Storage 支持的图像页面中的存在情况。使用水豚公司。 实际上在我的规范文件中我使用的是这样的代码: 它的图像应该是公关的...
如何将 Rails Rspec 测试中的随机变量发送到应用程序控制器? (设计、工厂机器人、水豚)
我需要一种方法来根据进入启动页面的人的 IP/位置来指定各种重定向到特定页面。 场景“来自 asdf 的用户看到 ASDF 页面” 创建用户来自...
‘let’我明白了,它仅在从示例中调用时才使用(示例是水豚的“it”或“scenario”)。 'before' 本质上是 'before :each',根据这篇文章,本质上是 let!,如 fa...
Capybara::Ambigously:不明确匹配,找到 2 个与可见 xpath“/html”匹配的元素
我正在为 2017 年的项目编写第一个 rspec 测试,该项目使用 capybara、rspec、devise、bootstrap 和rails 场景“对未注册的帐户无效” 在('#myNavbar'...
我是一名新手爱好者,正在尝试为使用 capybara 2.10.1 和 rspec 的 2017 年 Rails 项目编写我的第一个 rspec。 我很兴奋,做了 save_and_open_page,ctrl-shift-c,右键单击链接到...
如何使用 Capybara + Selenium 测试响应码
我有以下规格: 它“删除帖子”,:js => true do ... ... page.status_code.should = '404' 结尾 page.status_code 行给我这个错误: 水豚::NotSupportedByDriverEr...
我在 Mac 上使用 cucumber/capybara/selenium/firefox。除了 d&d 之外,一切都很好。通过 drag_node.drag_to(drop_node) 可以进行拖放。调用时,它不会引发任何错误...
使用 RSpec 和 Capybara/Selenium 整体运行系统测试时出现奇怪问题
我使用 Capybara/Selenium 定期进行 RSpec Rails 系统测试,如下所示: RSpec.describe“模型”,类型::系统做 上下文“更新模型信息1”做 # ... 结尾 上下文和...
用 RSpec 和 Capybara 匹配具有 HTML 标签的文本
我正在使用 RSpec 和 Capybara 来期待包含 HTML 标签的文本,如下所示: expect(page).to have_css('#dom_id', :text => "带有 HTML 标签的文本", :visible => true, :
我有一个 字段(一个 Rails 模型属性),我必须测试它是否显示了允许的最大长度错误消息。我必须使用 Capybara、Selenium 的系统规范来做到这一点……</desc> <question vote="0"> <p>我有一个 <pre><code><textarea></code></pre> 字段(一个 Rails 模型属性),我必须测试它是否显示了允许的最大长度错误消息。我必须使用启用了 Capybara、Selenium 等的系统规范来做到这一点。</p> <pre><code># model class Model < ActiveRecord::Base validates_length_of :description, maximum: 1000 end # view <label for="description">Description</label> <textarea maxlength="1000" id="description">Some text</textarea> # RSpec RSpec.describe "Model", type: :system do it "should fail" do visit edit_model_path(@model) fill_in "Description", with: "abcdefghijklmnopqrstuvwxyz"*1000 # ... end end </code></pre> <p>我试图用超过 1000 个字符的文本填充 <pre><code><textarea></code></pre>,而且 (<pre><code>maxlength="1000"</code></pre>),它只插入 <pre><code><textarea></code></pre> 文本的前 1000 个字符,这让我无法测试最大长度错误消息输出。</p> <p>我认为一种测试方法是在 RSpec 示例中更改 <pre><code>maxlength</code></pre> 的 <pre><code><textarea></code></pre> 属性,这样我就可以填写超过 1000 个字符,使我能够有效地测试最大长度错误。</p> <p>是否可以使用 RSpec Capybara、Selenium 等更改<pre><code>maxlength</code></pre> 属性?</p> </question> <answer tick="true" vote="0"> <p>基于@max 评论,这是一种(可用于测试的)方法,通过使用 Selenium 在 RSpec 中更改 <pre><code>maxlength</code></pre> 的 <pre><code><textarea></code></pre> 属性:</p> <pre><code># RSpec RSpec.describe "Model", type: :system do it "should fail" do # ... page.execute_script("document.getElementById('description').removeAttribute('maxlength')"); # ... end end </code></pre> </answer> </body></html>
How to fill_in datepicker using Capybara, Rails, MiniTest spec
我有一个生成以下 HTML 的 form_tag: 我有一个生成以下 HTML 的 form_tag: <form accept-charset="UTF-8" action="http://www.example.com/product_page" id="dates_form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div> Min date: <input id="datepicker_mini" name="datepicker_mini" type="text" /> Max date: <input id="datepicker_maxi" name="datepicker_maxi" type="text" /> </form> 以上是所有生成的 HTML。我已经删除了所有部分和布局,以尝试尽可能轻松地调试此问题。 日期选择器字段调用 jquery UI 日期选择器。 我想避免在我的测试中使用 javascript,而只是在日期字段中填写文本日期。我已经尝试过 fill_in "datepicker_mini", :with => "01/01/2010" 但虽然它不会导致测试失败,但当我使用 save_and_open_page 进行测试时它也不会填写该字段。 更新:测试代码 it "runs report" do login_test_user within("#dates_form") do fill_in "datepicker_mini", :with => "01/01/2010" fill_in "datepicker_maxi", :with => "01/01/2020" end save_and_open_page end 任何帮助将不胜感激。 谢谢。 我有同样的问题。在阅读了水豚的文档后,我的解决方案是使用 page.execute_script() 直接为输入设置一个值。 ## fill_in "person_birthdate, with: "21/12/1980" page.execute_script("$('#person_birthdate').val('21/12/1980')") 我觉得这有点脏,但对我有用。 陷阱: 我使用了 Selenium 驱动器。 我用 js 运行示例:true 我用了一个叫做zebra的插件来生成日期选择器,但是原理是一样的 编辑:这也适用于 Poltergeist 我喜欢这个解决方案: page.execute_script("$('#show_sale_date').datepicker('setDate', '01/01/2010')") 取自这里http://api.jqueryui.com/datepicker/#method-setDate 如果你想模拟 UI 点击,这对我有用(使用 javascript 驱动程序)。 当我的日期选择器的 ID 是“target_date”时,导航到下个月,然后选择 15 号。 page.execute_script %Q{ $('#target_date').trigger('focus') } page.execute_script %Q{ $('a.ui-datepicker-next').trigger('click') } page.execute_script %Q{ $('a.ui-state-default:contains("15")').trigger('click') } 这对我有用。日期采用该格式很重要,否则日期选择器不会解析它。 page.execute_script %Q{ $("md-datepicker[name='datepicker_mini'] input").val('2010-1-1').trigger('input') } 上述解决方案对我不起作用。也许是因为我正在为其编写测试的应用程序上没有输入字段。我的解决方案更丑陋,但它会选择日期并在仅 GUI 的日期选择器中验证选择。 ##selects 'Custom' option, then specified dates, and verifies that specified dates are displayed. Then(/^select "Custom" values, "([^"]*)" to "([^"]*)" and verify selection$/) do |arg1,arg2| step %{select 'Custom' from timespan drop-down} start = Date.strptime("#{arg1}",'%m/%d/%Y') start_day = start.day start_month = start.strftime('%b') start_year = start.year stop = Date.strptime("#{arg2}",'%m/%d/%Y') stop_day = stop.day stop_month = stop.strftime('%b') stop_year = stop.year within('.left.hasDatepicker') do find('.ui-datepicker-year').click find('option', :text => start_year).click find('.ui-datepicker-month').click find('option', :text => start_month).click find('.ui-state-default', :text => start_day, :match => :prefer_exact).click end within('.right.customdatepicker') do find('.ui-datepicker-year').click find('option', :text => stop_year).click find('.ui-datepicker-month').click find('option', :text => stop_month).click find('.ui-state-default', :text => stop_day, :match => :prefer_exact).click end find('input[value="Go"]').click date_picker = find('.timespanperiod').text start_date, end_date = date_picker.split(" - ") start_formatted = Date.strptime("#{start_date}",'%d/%m/%Y') end_formatted = Date.strptime("#{end_date}",'%d/%m/%Y') start_formatted.should eq (Date.strptime("#{arg1}",'%m/%d/%Y')) end_formatted.should eq (Date.strptime("#{arg2}",'%m/%d/%Y')) end 在find(".active.day").click为我工作后添加fill_in: within("#dates_form") do fill_in "datepicker_mini", :with => "01/01/2010" find(".active.day").click fill_in "datepicker_maxi", :with => "01/01/2020" find(".active.day").click end 我将 Minitest 与 Capybara 一起使用,并且能够执行以下操作: fill_in "Starts at", with: "2023-04-22T10:00:00" 当您使用浏览器的 Inspect 工具时,格式与自动显示为字段值的内容相匹配。
Ruby-Capybara 页面加载等待 [在 Ruby-Capybara-Selenium-Cucumber 嵌入式框架中为 Web 自动化设置方法]
我必须在使用嵌入式 [Ruby-capybara-selenium-cucumber] 创建的自动化框架中计算每次导航的网页渲染时间。 一些网页是 Ajax 开发的。 #Xpath
我正在使用 rspec、capybara 和 launchy 来测试我的 Web 应用程序。 这是我的规格: 需要'spec_helper' 描述“路线”做 描述“获取请求”做 它“GET /root_path”做 ...
我正在测试我的一个规范中的注册流程。这是一个很长的例子,测试一个多步骤向导,有超过 20 个 expect(page).to。 当我早期的期望之一失败时,很可能......
如何使用 Capybara 和 ChromeDriver 模拟输入字段中的输入?
我有以下帮助方法将字符串输入输入字段并按下回车键,但似乎从未按下回车键。我看到输入字段中输入了字符串,但是
Webdrivers::NetworkError - Mac64 M1 - ChromeDriver
尝试连接到 ChromeDriver 时,我的 Capybara Selenium Webdriver 设置失败 - 看来他们发布了一个没有 M1 版本的版本,可以在 Chromedriver API https://
我在capybara中有2个场景,第一个场景是检查页面上是否有链接,第二个场景是检查链接是否不存在。第一个场景检查页面上是否有链接,第二个场景检查页面上是否没有链接。我能够通过使用下面的方法让第一个测试通过:...。
为什么我的(javascript)变化事件没有在我的测试中被触发?
我有一个有许多类似文本框的页面,我在所有的文本框上都安装了一个Javascript的变化监听器(虽然我写的是Coffeescript)。HTML示例。
使用Chromedriver将Capybara下的窗口最大化。
我正在使用Capybara来自动拍摄一些屏幕截图,我需要chrome浏览器以最大化的方式运行,但我似乎不能让它工作。我需要chrome浏览器运行最大化,但我似乎不能让它工作。基于https:/sites.google.comachromium.orgchromedriver...